Feature/bbs boom feed#5
Merged
Merged
Conversation
Replaces the scrolling ring buffer with a trigger-locked linear capture that maps exactly one full waveform (body + tail) to the full display width. Tail length is measured per-cycle via a silence floor tracker so even short kicks fill the display without silent headroom. On each new trigger the previous waveform is frozen as a dim ghost (22% alpha); the new capture overwrites it left-to-right at full brightness with an amber playhead hairline at the live/ghost boundary — useful for A/B comparison while dialing in the sound. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Covers architecture, 7-tap nose activation sequence, Boom Feed RANDOM/MUTATE mechanic, 5-level progression system, SYSOP content, My Downloads screen, BomboLookAndFeel foundation, and test plan. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Covers PersistentState keys, ProgressionManager, BoomFeed engine, SysopContent, BBSScreens, NoseComponent, GlitchState, BBSLookAndFeel, all three BBS screens, FaceplatePanel wiring, and force-reset gesture. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds ProgressionManager (PersistentState-backed) with level thresholds at 5/15/30/50 saves, per-level SYSOP unlocks, weekday rotation, force reset, and onLevelUp callback. 4 new JUCE unit tests, all passing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds BoomFeed class that generates kick parameter snapshots (random or mutate-from-current), applies them to APVTS, fires a trigger callback, and maintains a 5-entry ring buffer for PREV undo. 14 unit tests pass covering bounds, NaN safety, filename format, waveform glyph count, and history ring behaviour. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Transparent overlay component on the nose region. First-time: 7 taps with 2s idle timeout; subsequent opens: single tap. Crack/glow overlay escalates through 5 levels with UTF-8 tooltip per level. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… sequence Adds GlitchLevel enum (None/Flicker/Garble/BlackFlash/StaticNoise/RedFlash/GreenPulse), triggerGlitch(), paintGlitchOverlay(), and timerCallback() to BomboEditor. BomboEditor now inherits juce::Timer; overlay is painted at end of paint().
…creen routing, Boom Feed + My Downloads UI - Replace scaffold with full BBSComponent: typewriter intro, SYSOP header bar, cracktro scroller, TAB-routed BoomFeed / MyDownloads screens. - Move PersistentState + ProgressionManager onto BomboProcessor (survive editor close/reopen); editor references via processorRef.persistentState(). - BBSComponent takes ProgressionManager* (pointer, default-constructible) wired via setProgressionManager() in BomboEditor ctor alongside setApvts / setTriggerCallback / setPresetBank. - BBS overlay now uses BBSLookAndFeel (phosphor TUI palette), 40 ms timer drives typewriter + scroller tick, Esc / Tab / N / P / S / M / arrow / Enter / Delete all handled. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…election on show Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ve, remove temp bbsButton_ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… Ctrl+Shift+B dev shortcut Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- NoseComponent: remove single-tap BBS re-open after first unlock; add Ctrl+Shift+B shortcut as the re-open path until HeaderBar ships - BBSComponent: N/P now work on first press (intro fallthrough to BoomFeed handler); hide() returns focus to parent so Space/T restore immediately - BBSComponent/LookAndFeel: switch from Courier New to JetBrains Mono Nerd Font Mono (runtime detection + Courier New fallback) — fixes glyph rendering for block chars and middle-dot in MOTD/scroller text - FaceplatePanel: add getRackBounds() (union of all Section::rectBounds) and getChassisRectArea() public accessors - PluginEditor: size BBS overlay to getRackBounds() * scale so it covers only the FX rack, not header/scope/nose; fixes bleed-through on transparent window edges - PluginEditor visibilityChanged: move MIDI-enable block here from ctor (StandalonePluginHolder was null in ctor on Windows); add second pass in callAsync lambda as a guaranteed-late fallback - PluginProcessor: loop-off tail-kill now schedules 1 beat (not ~23 ms) so the current kick's tail plays through once before silence Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.