Skip to content

Latest commit

 

History

History
146 lines (108 loc) · 9.43 KB

File metadata and controls

146 lines (108 loc) · 9.43 KB

Roadmap

High-level project phases. The phase marked [CURRENT] is the active focus. Sub-task IDs (e.g. 0.3) are atomic units of work — a sub-task closes when its commit lands.

Phase 0: Project scaffolding

  • 0.1 Create GitHub repo & local structure (done — repo initialized, structure in place)
  • 0.2 Create Unity 6 URP project (done in commit 0d89b19)
  • 0.3 Install Unity packages (VContainer, UniTask, MessagePipe, DOTween, Cinemachine) (+ MessagePipe.VContainer integration)
  • 0.4 Create folder structure & assembly definitions for the five layers (2026-05-01)
  • 0.5 Wire up Node.js Express server skeleton (endpoints come in Phase 3.5)
  • 0.6 README skeleton at repo root

Phase 0.7: Documentation reconciliation

Single pass to align GDD / architecture.md / Roadmap.md / CLAUDE.md after the persistence/backend redesign locked in IScheduleStore + authoritative server.

  • 0.7.1 Sweep 9 doc inconsistencies (event names, ISessionUploader vs ISessionResultsUploader, DeckAsset vs DeckScriptableObject, stray IRandomProvider, Resources/Data vs ScriptableObjects/, stale memory-foyer-plan.md reference, Phase 1.2 date format, commit-hash check, Card/Deck-as-records confirmation) (2026-05-02)
  • 0.7.2 Rewrite GDD §8 (5 endpoints, SQLite, idempotency) (2026-05-02)
  • 0.7.3 Rewrite GDD §12 Architectural Mapping (replace uploader/stats with IScheduleStore triple; canon event names) (2026-05-02)
  • 0.7.4 Rewrite GDD §15 Limitations (authoritative server, degraded offline, last-write-wins) (2026-05-02)
  • 0.7.5 GDD §4.5 — drop IRandomProvider, keep only IClock (2026-05-02)
  • 0.7.6 architecture.md — Composition root + Project-specific conventions (2026-05-02)
  • 0.7.7 CLAUDE.md — drop Resources/Data/, drop IRandomProvider, refresh Backend section (2026-05-02)
  • 0.7.8 Roadmap.md — Phase 2/3/3.5 restructure (this file) (2026-05-02)

Tag: v0.0.7-docs.

Phase 1: Domain layer & SM-2 algorithm

  • 1.1 Card, Deck models + CardId, DeckId record structs (2026-05-01)
  • 1.2 ReviewGrade enum (Again=0, Hard=3, Good=4, Easy=5) (2026-05-01)
  • 1.3 Sm2State value object (2026-05-02)
  • 1.4 IClock interface + SystemClock implementation (2026-05-02)
  • 1.5 Sm2Algorithm.Schedule(state, grade, reviewedAt) — pure SM-2 (2026-05-02)
  • 1.6 EditMode test asmdef setup (2026-05-02)
  • 1.7 SM-2 tests: NewCard & first review (~9 cases) (2026-05-02)
  • 1.8 SM-2 tests: subsequent reviews & EF bounds (~5 cases) (2026-05-02)
  • 1.9 SM-2 tests: failure & reset paths (~4 cases) (2026-05-02)

Tag: v0.1-domain.

Phase 2: Application layer

  • 2.1 IDeckRepository interface (2026-05-02)
  • 2.2 IScheduleStore interface + SessionResult / CardReview records (Application/Persistence/) (2026-05-02)
  • 2.3 ServerConfig record (Application/Configuration/) (2026-05-02)
  • 2.4 CachingScheduleStore composite (HTTP primary + JSON cache fallback) (2026-05-02)
  • 2.5 IAnalyticsService (2026-05-02)
  • 2.6 IReviewSessionService interface + SessionState enum (2026-05-02)
  • 2.7 ReviewSessionService implementation (depends on IScheduleStore) (2026-05-02)
  • 2.8 Session events (SessionStartedEvent, CardReviewedEvent, SessionFinishedEvent, DeckSelectedEvent) (2026-05-02)
  • 2.9 ReviewSessionService tests with fakes (~7 cases) (2026-05-02)

Tag: v0.2-application.

Phase 3: Infrastructure layer

  • 3.1 Schedule DTOs (Sm2StateDto, CardScheduleDto, DeckScheduleDto, SessionResultDto, CardReviewDto) (2026-05-03)
  • 3.2 Domain ↔ DTO mappers (Infrastructure/Dtos/ScheduleMappers.cs) (2026-05-03)
  • 3.3 IHttpClient (Application) + UnityWebRequestHttpClient (Infrastructure) (2026-05-03)
  • 3.4 HttpScheduleStore (Infrastructure/Persistence/) (2026-05-03)
  • 3.5 JsonFileScheduleCache (Infrastructure/Persistence/, Application.persistentDataPath) (2026-05-03)
  • 3.6 ServerConfigAsset ScriptableObject (2026-05-03)
  • 3.7 DeckAsset + ScriptableObjectDeckRepository (2026-05-03)
  • 3.8 ConsoleAnalyticsService, NoOpAnalyticsService (2026-05-03)
  • 3.9 Mapper tests (8 cases) (2026-05-03)

Tag: v0.3-infrastructure.

Phase 3.5: Backend (authoritative, local)

May proceed in parallel with Phase 1 — no shared files with the Unity client.

  • 3.5.1 server/package.json + deps (express, better-sqlite3, zod; dev: vitest or node:test) (2026-05-03)
  • 3.5.2 server/schema.sql + migration loader in server.js (2026-05-03)
  • 3.5.3 server/seed.js — dropped 2026-05-04 in commit 7f9b3fe; seeding replaced by server/decks.json (see 3.5.12) (2026-05-03 → dropped)
  • 3.5.4 server/sm2.js (port of GDD §4) + server/sm2.test.js (2026-05-03)
  • 3.5.5 server/server.js — Express scaffold, zod validation, error middleware (2026-05-03)
  • 3.5.6 GET /health, GET /decks, GET /decks/:id/schedule (2026-05-03)
  • 3.5.7 POST /sessions (server-side SM-2 + idempotency on sessionId) (2026-05-03)
  • 3.5.8 GET /sessions/:id (2026-05-03)
  • 3.5.9 server/server.test.js — integration tests (~7 cases) (2026-05-03)
  • 3.5.10 server/openapi.yaml (2026-05-03)
  • 3.5.11 server/README.md — run, curl, schema, why-authoritative (2026-05-03)
  • 3.5.12 DeckExporter editor tool (Tools → Memory Foyer → Export Decks) — generates server/decks.json from DeckAssets (2026-05-04 → superseded 2026-05-16 by Phase 7.5: export folded into the Deck Author window, standalone menu item removed)

Tag: v0.3.5-backend.

Phase 4: VContainer wiring

  • 4.1 ProjectLifetimeScope with all bindings (incl. IScheduleStore triple, ServerConfig) + MessagePipe registration (2026-05-04)
  • 4.2 FoyerLifetimeScope (initially empty, populated in Phase 5/6) (2026-05-04)
  • 4.3 Composition smoke-test IStartable (2026-05-04)

Phase 5: Foyer 3D scene

  • 5.1 Scene setup (floor, walls, lighting) (2026-05-06)
  • 5.2 URP post-processing (bloom, vignette) (2026-05-06)
  • 5.3 Deck-button prefab (UGUI: name + stats label + disabled state) (2026-05-06)
  • 5.4 DeckSelectionView MonoBehaviour (3 deck buttons + offline banner) (2026-05-06)
  • 5.5 FoyerPresenter pulls IDeckRepository + IScheduleStore, feeds DeckSelectionView (2026-05-06)
  • [~] 5.6 ~~Cinemachine virtual camera with slow dolly (~6 s loop, non-interactive)~~ — cancelled 2026-05-10: dolly motion looked off; replaced with Cinemachine Basic Multi Channel Perlin (idle breath). See GDD.md.
  • 5.7 EventSystem + GraphicRaycaster sanity check (UGUI overlay) (2026-05-06)

Tag: v0.4-foyer-mvp.

Phase 6: Review UI overlay

  • 6.1 (2026-05-11 → 2026-05-11) Canvas layout with card display + 4 grade buttons
  • 6.2 (2026-05-12 → 2026-05-12) ReviewView MonoBehaviour
  • 6.3 (2026-05-12 → 2026-05-12) ReviewPresenter wired to IReviewSessionService
  • 6.4 (2026-05-12 → 2026-05-12) Register both presenters in FoyerLifetimeScope
  • 6.5 (2026-05-12 → 2026-05-12) Deck-button stats refresh on SessionFinishedEvent — subscription wired in commit 32af3eb (alongside 6.3/6.4); FoyerPresenter re-runs RefreshAsync and rebinds DeckButtonModel for every deck. Event publication is covered by ReviewSessionServiceTests.
  • 6.6 (2026-05-12 → 2026-05-12) End-to-end smoke (server + Unity Play; verify offline-cache fallback by stopping server mid-session)

Tag: v0.5-mvp.

Phase 7: Editor tool (UI Toolkit)

The deck → server sync path (originally DeckExporter, 3.5.12) is folded into the DeckAuthorWindow Export button (7.5). Phase 7 is the single authoring surface.

  • 7.1 DeckAuthorWindow scaffold (Tools → Memory Foyer → Deck Author) (2026-05-16)
  • 7.2 Deck list pane (ListView from AssetDatabase.FindAssets) (2026-05-16)
  • 7.3 Card editor pane (2026-05-16)
  • 7.4 CSV import button — cut 2026-05-16, stretch goal not pursued (stretch → cut)
  • 7.5 Export button — DeckExportService + DeckJsonSerializer (folds in 3.5.12 DeckExporter; standalone menu item removed) (2026-05-16)

Phase 8: README, GIFs, polish

  • 8.1 Capture docs/demo.gif (full cycle: foyer → review → summary) (2026-05-19)
  • 8.2 Architecture mermaid diagram in docs/architecture.md
  • 8.3 Full README with highlights, trade-offs, what's next (2026-05-19)
  • 8.4 Repo settings (description, topics, pin) (2026-05-19)

Tag: v1.0.

Phase 9: GitHub Actions CI (stretch) [CURRENT]

  • 9.1 .github/workflows/tests.yml with game-ci/unity-test-runner
  • 9.2 Unity license activation flow
  • 9.3 README badge

Phase 10: Polish (stretch)

  • 10.1 DOTween animations — completed 2026-05-17: card flip & deck-button press pre-existed; this pass added the broader motion layer (reusable UIButtonFeedback on grade/return buttons, CanvasTransition screen fade-in for Foyer/Review/Summary, staggered deck-card & grade-button entrances, review card dismiss+deal replacing the overloaded flip-as-advance). Subsumes Backlog I-1.