Done — merged to master. Backend anonymous sessions, graded anon progress, horizon computation, and sign-in claim landed in PR #56 (0fbe895). Closing.
Splitting this into two reviewable PRs since it spans critical shared lesson code.
Part 1 (up now): spikersoft-angular#99 — the self-contained, fully-tested foundation:
- new `@spikersoft/pla…
Done in spikersoft-backend#56 (merged to master). Ships anonymous sessions + PII-free progress ledger (TTL/unique indexes), the server-authoritative horizon (`freeAllotment + floor(completions×1.5)…
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…
Done in spikersoft-backend#55 (merged to master). GET /api/Lessons/journey ships with per-language trail composition + platform-wide daily streaks + reserved horizon slot. 21 tests green. Closing.
Scope expansion per #330 decision: this endpoint also returns streak data (current + longest streak, computed from UserLessonProgress completion timestamps — no schema change, lazy compute…
Folded into v1 per the #330 decision — streaks are now part of the frontend build (#333) with backend fields in #334. Closing; scope tracked there.
Decisions locked (@spikerj):
- Streaks — IN v1. #335 folds into the frontend build (#333); backend streak fields move into #334. #335 closed as folded.
- **Data source — thin `GET…
Sub-tickets filed:
- #333 — frontend: winding-path visualization, audio + prefs services, menu/route, prototype (the bulk of the work)
- #334 — backend: optional thin `GET /api/Lessons/jo…
Spike deliverable — "My Journey" progression visualization
Recon done against the live code. Recommendations below answer every checklist box; two decisions flagged for your sign-off at the…
Implementation sub-tickets filed: #331 (backend — anon sessions, graded anon progress, horizon computation, sign-in claim) and #332 (frontend — anon lesson mode, horizon lock UI, claim…
Design: completion-ratio unlocks for anonymous visitors
Spike deliverable. Grounded in the current code (auth gate in language-runner.ts, [Authorize] on all progress endpoints, attempt-token…
PRs open, stacked on the #326 pair — backend spikersoft-backend#54 (base: #53's branch) + frontend spikersoft-angular#97 (base: #96's branch). Merge order: #53 → #54, #96 → #97 (Gitea…
PRs open — backend spikersoft-backend#53 (spikerj/spikersoft-backend#53) + frontend spikersoft-angular#96 (https://git.spikersoft.com/spikerj/spikersoft-angular/pu…