Julien Calixte
64efc91392
feat: add valibot
2026-06-17 10:20:40 +02:00
Julien Calixte
362a448848
docs(model): clarify the switchTo last-good reset comment
2026-06-17 09:58:03 +02:00
Julien Calixte
e2f76195dd
fix(ui): disable the delete button during PNG export
2026-06-17 09:58:03 +02:00
Julien Calixte
69932fa2bf
docs: record the Library term and mark the plans library as built
2026-06-17 09:53:09 +02:00
Julien Calixte
ba5442c58f
test(app): cover the switcher, delete-confirm and .toml download wiring
2026-06-17 09:51:20 +02:00
Julien Calixte
7468ebd3c9
feat(ui): wire the plan switcher, delete confirm and .toml download into the app
2026-06-17 09:46:56 +02:00
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