Implements the frontend of the #330 spike. Optional, opt-in via Learn ▸ My Journey; the lesson/playground flow is unchanged.
Scope
New Nx lib feature-my-journey: standalone component rendering a per-language winding SVG trail of lesson nodes computed from progress + curriculum order.
Node states: completed, current, available, locked-prereq, locked-horizon (#329 gate, feature-flagged — degrades to sign-in CTA when #329 not present).
JourneyAudioService: single AudioContext, synthesized blips (success / lock / level-up). No audio assets, no CDN. Do not reuse dungeon-crawler/audio-system.ts (THREE-based).
JourneyPrefsService: persist sound + motion to localStorage, seed motion from matchMedia('(prefers-reduced-motion: reduce)'). Establishes the repo's first reduced-motion pattern. Header toggles.
Feedback animations via Web Animations API + CSS keyframes (node fill, checkmark draw, CSS-particle confetti). No Lottie.
Menu item in Learn dropdown + route /my-journey (public shell, auth-gated data), mirroring /tree-of-knowledge.
Done in spikersoft-angular#98 (merged to master). feature-my-journey ships the opt-in winding-path visualization with streak flame, synthesized audio, reduced-motion prefs, and the Learn ▸ My Journey route/menu wiring. Streaks landed in v1 per the #330 sign-off; horizon gate state reserved for #329. 16 tests green. Closing.
Done in spikersoft-angular#98 (merged to master). `feature-my-journey` ships the opt-in winding-path visualization with streak flame, synthesized audio, reduced-motion prefs, and the `Learn ▸ My Journey` route/menu wiring. Streaks landed in v1 per the #330 sign-off; horizon gate state reserved for #329. 16 tests green. Closing.
Done — merged to master. feature-my-journey winding-path visualization (node states incl. locked-horizon, JourneyAudioService, JourneyPrefsService with reduced-motion, /my-journey route + Learn menu item, i18n, unit tests) landed in PR #98 (4f3d0d4). The #329 horizon-lock integration was completed in #332 pt2 (anonymous horizon overlay). Closing.
Done — merged to `master`. `feature-my-journey` winding-path visualization (node states incl. `locked-horizon`, JourneyAudioService, JourneyPrefsService with reduced-motion, `/my-journey` route + Learn menu item, i18n, unit tests) landed in PR #98 (`4f3d0d4`). The #329 horizon-lock integration was completed in #332 pt2 (anonymous horizon overlay). Closing.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implements the frontend of the #330 spike. Optional, opt-in via
Learn ▸ My Journey; the lesson/playground flow is unchanged.Scope
feature-my-journey: standalone component rendering a per-language winding SVG trail of lesson nodes computed from progress + curriculum order.completed,current,available,locked-prereq,locked-horizon(#329 gate, feature-flagged — degrades to sign-in CTA when #329 not present).JourneyAudioService: singleAudioContext, synthesized blips (success / lock / level-up). No audio assets, no CDN. Do not reusedungeon-crawler/audio-system.ts(THREE-based).JourneyPrefsService: persistsound+motiontolocalStorage, seedmotionfrommatchMedia('(prefers-reduced-motion: reduce)'). Establishes the repo's first reduced-motion pattern. Header toggles.Learndropdown + route/my-journey(public shell, auth-gated data), mirroring/tree-of-knowledge.Out of scope: streaks (separate ticket), any change to the lesson flow, third-party deps.
Depends on / integrates: #330 (spike), #329 (horizon lock — optional, flag-gated), backend aggregation ticket (optional).
Data source:
GET /api/Lessons/progress+ curriculum order (or the thin/api/Lessons/journeyendpoint if that ticket lands first).Done in spikersoft-angular#98 (merged to master).
feature-my-journeyships the opt-in winding-path visualization with streak flame, synthesized audio, reduced-motion prefs, and theLearn ▸ My Journeyroute/menu wiring. Streaks landed in v1 per the #330 sign-off; horizon gate state reserved for #329. 16 tests green. Closing.Done — merged to
master.feature-my-journeywinding-path visualization (node states incl.locked-horizon, JourneyAudioService, JourneyPrefsService with reduced-motion,/my-journeyroute + Learn menu item, i18n, unit tests) landed in PR #98 (4f3d0d4). The #329 horizon-lock integration was completed in #332 pt2 (anonymous horizon overlay). Closing.