Commit Graph

33 Commits

Author SHA1 Message Date
Julien Calixte
3a012f186d feat(model): make useMacroplan own a library of named plans 2026-06-17 09:40:40 +02:00
Julien Calixte
1c986e417f feat(ui): add the plan switcher dropdown 2026-06-17 09:35:32 +02:00
Julien Calixte
3c32542a76 feat(export): add .toml source download and shared slugify helper 2026-06-17 09:32:07 +02:00
Julien Calixte
35c84cf943 docs: reword the Macroplan definition to be less flat
Lead with the promise-vs-reality tension ("keeps the receipts")
instead of the limp "learning-oriented record of what we committed
to deliver".
2026-06-17 08:50:52 +02:00
Julien Calixte
b876bca083 docs(plan): break down the plans library implementation 2026-06-17 08:50:00 +02:00
Julien Calixte
c4765d9630 docs(spec): design the plans library 2026-06-17 08:38:33 +02:00
Julien Calixte
59bedda78b chore: update readme 2026-06-17 08:34:57 +02:00
Julien Calixte
7c2da0f7ee docs(context): note the plan span in the Week definition 2026-06-17 01:40:39 +02:00
Julien Calixte
d499433f93 test(model): cover the authored plan span
Add coverage for start/end extending, snapping, never-clipping, and the
empty-plan case. The bundled sample now demonstrates the keys, so its
expected week range moves to the authored bounds.
2026-06-17 01:40:34 +02:00
Julien Calixte
d95f0a78c7 feat(model): add optional start/end plan span
Optional top-level `start`/`end` dates widen the plan's week range with
lead-in / trailing columns. They only extend the auto-fitted range, never
narrowing it or clipping a Feature, so a momentarily-tight bound can't hide
work in progress.
2026-06-17 01:40:29 +02:00
Julien Calixte
f37122eea1 test(export): cover the export filename slug 2026-06-17 01:30:07 +02:00
Julien Calixte
2173683535 feat(export): one-click PNG copy and download of the plan
Captures the full timeline (not just the scrolled viewport) by expanding
the grid to content width during render; clipboard write stays inside the
user gesture so Safari accepts it, with download as the documented fallback.
2026-06-17 01:30:03 +02:00
Julien Calixte
ca58ccb245 chore(deps): add html-to-image for PNG export 2026-06-17 01:29:57 +02:00
Julien Calixte
ead0d3158a test(model): expect three milestones in the bundled sample 2026-06-17 01:18:34 +02:00
Julien Calixte
80003077d3 docs(sample): add Code freeze and Beta launch milestones 2026-06-17 01:18:34 +02:00
Julien Calixte
ab28e2541a fix(editor): stretch the source textarea to fill its pane 2026-06-17 01:18:34 +02:00
Julien Calixte
8024f950e1 feat(grid): stack milestone labels in a band above the axis
- milestones render as horizontal label flags, auto-stacked onto extra
  rows with leader lines so labels in nearby weeks never collide
- "today" becomes a neutral grey column (mixed in oklab) and milestone
  diamonds are grey too — red is reserved for problems (late, red status,
  unmet counts), which no longer get a stray warm tint
- fix the name column to a stable width so the band aligns with the grid
2026-06-17 01:18:34 +02:00
Julien Calixte
629fa87ec1 style(layout): give the macroplan grid more width 2026-06-17 01:01:35 +02:00
Julien Calixte
6e800008d9 docs(sample): drop "slip" wording from the sample plan 2026-06-17 01:01:35 +02:00
Julien Calixte
d8ce9a052c feat(grid): stop bars at the last symbol and shade today's column
- bar line begins/ends at a glyph centre — no stub past the first/last symbol
- glyph halos so the bar passes behind, not through, the symbols
- today's week is a shaded column instead of a vertical rule
- widen week columns so date labels stop colliding
- drop "slip" wording from the legend
2026-06-17 01:01:35 +02:00
Julien Calixte
7cd6a1f98e feat(editor): syntax-highlight the TOML source with Shiki 2026-06-17 01:01:35 +02:00
Julien Calixte
e51f3b96e7 test(model): cover bar extent relative to the now week 2026-06-17 01:01:35 +02:00
Julien Calixte
7470d41803 feat(model): keep an overdue feature's bar running to the now week 2026-06-17 01:01:35 +02:00
Julien Calixte
8567c13036 chore(deps): add shiki for editor syntax highlighting 2026-06-17 01:01:35 +02:00
Julien Calixte
7fcae34c60 style: pin the light DaisyUI theme 2026-06-17 00:38:16 +02:00
Julien Calixte
1535c829ca test(ui): cover grid rendering of the sample plan 2026-06-17 00:38:16 +02:00
Julien Calixte
c62bdde727 feat(ui): render the Macroplan grid, editor and app shell 2026-06-17 00:38:16 +02:00
Julien Calixte
a7a4df52a9 test(model): cover week math, F2 classification and milestones 2026-06-17 00:38:16 +02:00
Julien Calixte
c1d72184eb feat(model): parse TOML plans and derive the Plan model
On-time vs. late is judged against the Original Estimate only, never a
re-estimate (ADR-0001); weeks are keyed by their Monday.
2026-06-17 00:38:16 +02:00
Julien Calixte
2c0e9c360f chore(deps): add smol-toml, vitest and component-test tooling 2026-06-17 00:38:16 +02:00
Julien Calixte
fbeffccf93 chore: verify auto-deploy webhook 2026-06-17 00:11:37 +02:00
Julien Calixte
2e0afd7137 style: use Fira Code as app font 2026-06-16 23:57:02 +02:00
Julien Calixte
a10e3a5dd9 chore: initial scaffold 2026-06-16 23:50:48 +02:00