A working log. Update it as work happens, not only at releases — it is what lets a session (human or agent) pick up where the last one stopped.
Conventions: newest first within each section. Move items down as they land.
When something ships, note the date. If a decision was made along the way, add
an ADR to DECISIONS.md and cite it here rather than
re-explaining.
Last updated: 2026-07-29
This file, plus AGENTS.md, ARCHITECTURE.md,
DECISIONS.md, docs/vsceasy.md and
docs/modules/. Written 2026-07-29 by reconstructing the
design from the source (ADR-025 made that feasible).
Known gaps to close as work touches them:
- The README lists five MCP tools; the server implements nine
(
verify_problem,update_problem,delete_problem,get_practice_habitsare undocumented there). - No CI configuration in the repository — tests and typecheck are run by hand.
CHANGELOG.mdstill describes only 0.0.1; the Learn track and the Makefile landed after it.- The header comment in
src/lib/lessons/trace.tssays "all 48 of them"; there are 84 lessons. A count in a comment goes stale — it should not name a number.
-
Debugging exercises.
Debug Exercise Tests(cmd+alt+d, dashboard button, status-bar menu) launches the tests under the debugger via the language adapter — Bun's adapter for TS/JS,debugpyfor Python (ADR-029). Typing-target refuses with an explanation;debugRunsis counted, not penalised. Gating is pure and covered by 8 unit tests. -
Goals and streaks. Day streak derived from history, a daily goal of problems and/or minutes, and a 30-day calendar. Surfaced in the dashboard (
Habitscard with an editable goal), the status bar (streak when idle, amber when a live streak is unfulfilled), the catalogue tree (one row above the patterns) and the MCP server (get_practice_habits).A day is a local calendar day and any finished session counts (ADR-026); either half of the goal satisfies it and it lives in the ORM so an agent can read it (ADR-027); the computation is pure and shared with the MCP process rather than reimplemented (ADR-028). See
docs/modules/habits.md.Verified: 21 new unit tests covering DST, year boundaries and the open-day case, plus an end-to-end call against the built MCP binary.
-
Learn track complete — foundations, AI engineering and ML engineering lessons, resizable lesson sidebar, lesson translation.
Makefilefor building and installing locally (make install).- AI Engineering and ML Engineering lesson tracks.
- Resizable Learn sidebar.
Initial release.
- Four practice modes: typing target, assisted, TDD, blind (ADR-006).
- Typing speed and accuracy tracking; paste blocked everywhere (ADR-006, ADR-008).
- Exercise generation via Ollama or any OpenAI-compatible endpoint, with two-sided verification (ADR-003) and repair-on-retry (ADR-004).
- Topic-weakness tracking feeding the generator.
- Problem import/export, and adding a problem from a plain statement (ADR-024).
- "Ask the Coach" chat with persistent threads (ADR-019, ADR-020).
- MCP server for connecting an AI agent (ADR-010, ADR-023).
- Spanish problem statements, prose only (ADR-014, ADR-015).
Unordered; nothing here is committed to.
- Close the documentation gaps listed above — MCP tool list, changelog, CI.
- More languages. The adapter seam is ready (ADR-002); Go and Rust are the
obvious candidates, each one entry in
src/lib/languages.tsplus a runner. - Spaced repetition. The history to drive it exists; what is missing is a
scheduling model for when a solved problem should come back. The day
arithmetic in
src/lib/streaks.tsis reusable for it. - Goal variants. Weekly goals that tolerate a day off, and per-pattern completion targets, were both considered and deliberately left out of the first cut (ADR-027) — revisit if the daily goal proves too rigid.
- Session review. The post-session diff against the reference solution is computed but only lightly surfaced.
- Pattern-level progress. The catalogue tree tracks per-pattern progress; the dashboard does not show it.
computeStatsrecomputes over the whole history on every call, and the dashboard calls it on every history change. Fine at the 500-record cap (ADR-009), worth revisiting if that cap moves.- Generation quality depends entirely on the local model. Below roughly 7B, verification (ADR-003) rejects most attempts and the run falls back to the built-in bank — correct behaviour, but slow to arrive at.