savepoint 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +4 -1
- package/.savepoint/Design.md +22 -17
- package/.savepoint/audit/v1/E01/proposals.md +168 -0
- package/.savepoint/audit/v1/E01/snapshot.md +78 -0
- package/.savepoint/audit/{E01-go-setup → v1/E01-go-setup}/proposals.md +7 -7
- package/.savepoint/audit/{E01-go-setup → v1/E01-go-setup}/snapshot.md +2 -2
- package/.savepoint/audit/{E01-scaffolding → v1/E01-scaffolding}/proposals/AGENTS.md +5 -5
- package/.savepoint/audit/{E02-data-readers → v1/E02-data-readers}/proposals.md +20 -20
- package/.savepoint/audit/{E02-data-readers → v1/E02-data-readers}/snapshot.md +1 -1
- package/.savepoint/audit/{E03-board-tui-core → v1/E03-board-tui-core}/proposals.md +11 -11
- package/.savepoint/audit/{E03-board-tui-core → v1/E03-board-tui-core}/snapshot.md +1 -1
- package/.savepoint/audit/{E04-board-components → v1/E04-board-components}/proposals.md +14 -14
- package/.savepoint/audit/{E04-board-components → v1/E04-board-components}/snapshot.md +1 -1
- package/.savepoint/audit/{E05-init-command → v1/E05-init-command}/snapshot.md +1 -1
- package/.savepoint/audit/{E05-phase-transitions → v1/E05-phase-transitions}/proposals.md +4 -4
- package/.savepoint/audit/{E05-phase-transitions → v1/E05-phase-transitions}/snapshot.md +1 -1
- package/.savepoint/audit/{E06-atari-noir-layout → v1/E06-atari-noir-layout}/proposals.md +2 -2
- package/.savepoint/audit/{E07-audit-pipeline → v1/E07-audit-pipeline}/snapshot.md +6 -6
- package/.savepoint/audit/v1.1/E02-cross-platform-compatibility/proposals.md +114 -0
- package/.savepoint/audit/v1.1/E02-cross-platform-compatibility/snapshot.md +41 -0
- package/.savepoint/audit/v1.1/E04-epic-navigation/proposals.md +156 -0
- package/.savepoint/audit/v1.1/E04-epic-navigation/snapshot.md +48 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +1 -1
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +1 -1
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +1 -1
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +1 -1
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/{Design.md → E06-Detail.md} +5 -3
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +1 -1
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +1 -1
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +1 -1
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +2 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/{Design.md → E01-Detail.md} +9 -1
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/{T007-next-activity-header.md → T001-next-activity-header.md} +13 -12
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T002-rename-epic-design-files.md +9 -9
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T003-rename-release-prd.md +2 -2
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T004-update-instruction-files.md +13 -12
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T005-update-cross-references.md +14 -13
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T006-column-and-detail-scrolling.md +25 -15
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T007-column-focus-border-stability.md +57 -0
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/{Design.md → E02-Detail.md} +12 -3
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T001-fix-makefile.md +11 -8
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T002-linux-build-target.md +12 -7
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T003-macos-build-target.md +9 -5
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T004-smoke-tests-and-artifacts.md +30 -9
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +32 -0
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T001-border-resize-fix.md +40 -0
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T002-next-activity-below-header.md +64 -0
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T003-checkbox-rendering-fix.md +56 -0
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T005-unify-status-glyphs.md +65 -0
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +36 -0
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/E04-Detail.md +51 -0
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T001-sidebar-focusable-navigation.md +65 -0
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T002-epic-detail-overlay.md +73 -0
- package/.savepoint/releases/v1.1/epics/E04-epic-navigation/tasks/T003-epic-status-glyphs.md +73 -0
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +45 -0
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +34 -0
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +30 -0
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +33 -0
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +88 -0
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +30 -0
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +46 -0
- package/.savepoint/releases/v1.1/v1.1-PRD.md +79 -0
- package/.savepoint/router.md +33 -105
- package/AGENTS.md +56 -113
- package/Makefile +19 -3
- package/README.md +6 -5
- package/agent-skills/savepoint-audit/SKILL.md +6 -6
- package/agent-skills/savepoint-build-task/SKILL.md +2 -2
- package/agent-skills/savepoint-create-plan/SKILL.md +3 -3
- package/agent-skills/savepoint-create-task/SKILL.md +2 -2
- package/agent-skills/savepoint-draft-prd/SKILL.md +1 -1
- package/agent-skills/savepoint-system-design/SKILL.md +1 -1
- package/internal/board/board.go +43 -27
- package/internal/board/board_test.go +71 -0
- package/internal/board/card.go +34 -3
- package/internal/board/card_test.go +105 -12
- package/internal/board/column.go +40 -5
- package/internal/board/column_test.go +60 -13
- package/internal/board/detail.go +107 -25
- package/internal/board/detail_test.go +117 -26
- package/internal/board/epic_panel.go +105 -8
- package/internal/board/epic_panel_test.go +343 -5
- package/internal/board/layout.go +12 -2
- package/internal/board/layout_test.go +17 -0
- package/internal/board/model.go +141 -24
- package/internal/board/render_policy_test.go +77 -0
- package/internal/board/status.go +23 -0
- package/internal/board/update.go +276 -8
- package/internal/board/update_test.go +166 -0
- package/internal/board/view.go +131 -17
- package/internal/board/view_test.go +159 -1
- package/internal/board/watch.go +24 -6
- package/internal/buildtool/main.go +219 -0
- package/internal/data/parser.go +8 -0
- package/internal/data/parser_test.go +35 -0
- package/internal/data/task.go +10 -0
- package/internal/styles/palette.go +3 -3
- package/internal/styles/styles.go +39 -12
- package/main.go +9 -0
- package/package.json +1 -1
- package/savepoint +0 -0
- package/savepoint.exe +0 -0
- package/templates/project/.savepoint/router.md +6 -5
- package/templates/project/AGENTS.md +47 -101
- package/templates/prompts/audit-reconciliation.prompt.md +6 -6
- package/templates/prompts/epic-design.prompt.md +3 -3
- package/templates/prompts/task-breakdown.prompt.md +1 -1
- package/templates/prompts/task-building.prompt.md +1 -1
- package/templates/prompts/task-planning.prompt.md +1 -1
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-border-resize-fix.md +0 -36
- package/main.exe +0 -0
- /package/.savepoint/audit/{E01-scaffolding → v1/E01-scaffolding}/proposals/Design.md +0 -0
- /package/.savepoint/audit/{E01-scaffolding → v1/E01-scaffolding}/proposals/epic-Design.md +0 -0
- /package/.savepoint/audit/{E01-scaffolding → v1/E01-scaffolding}/proposals/quality-review.md +0 -0
- /package/.savepoint/audit/{E01-scaffolding → v1/E01-scaffolding}/snapshot.md +0 -0
- /package/.savepoint/audit/{E02-data-model → v1/E02-data-model}/snapshot.md +0 -0
- /package/.savepoint/audit/{E03-cli-foundation → v1/E03-cli-foundation}/snapshot.md +0 -0
- /package/.savepoint/audit/{E04-templates-and-prompts → v1/E04-templates-and-prompts}/snapshot.md +0 -0
- /package/.savepoint/audit/{E06-atari-noir-layout → v1/E06-atari-noir-layout}/snapshot.md +0 -0
- /package/.savepoint/audit/{E06-tui-board → v1/E06-tui-board}/snapshot.md +0 -0
- /package/.savepoint/audit/{E08-board-workflow-cleanup → v1/E08-board-workflow-cleanup}/snapshot.md +0 -0
- /package/.savepoint/releases/v1/epics/E01-go-setup/{Design.md → E01-Detail.md} +0 -0
- /package/.savepoint/releases/v1/epics/E02-data-readers/{Design.md → E02-Detail.md} +0 -0
- /package/.savepoint/releases/v1/epics/E03-board-tui-core/{Design.md → E03-Detail.md} +0 -0
- /package/.savepoint/releases/v1/epics/E04-board-components/{Design.md → E04-Detail.md} +0 -0
- /package/.savepoint/releases/v1/epics/E05-phase-transitions/{Design.md → E05-Detail.md} +0 -0
- /package/.savepoint/releases/v1/{PRD.md → v1-PRD.md} +0 -0
package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E05-tasking-permissions/T004-implement-m-hotkey
|
|
3
|
+
status: done
|
|
4
|
+
objective: "Implement TUI `m` hotkey that explicitly sets the router's task from the currently focused task"
|
|
5
|
+
depends_on: ["E05-tasking-permissions/T002-update-router-md", "E05-tasking-permissions/T005-add-help-entry"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# T004: Implement TUI `m` hotkey
|
|
9
|
+
|
|
10
|
+
## Acceptance Criteria
|
|
11
|
+
|
|
12
|
+
- Pressing `m` in the TUI board (when no overlay is open) reads the currently focused task and updates `router.md` with:
|
|
13
|
+
- `release`: from focused task
|
|
14
|
+
- `epic`: from focused task
|
|
15
|
+
- `task`: full task ID
|
|
16
|
+
- `state`: `task-building` (or `audit-pending` if last uncompleted task in epic)
|
|
17
|
+
- Pressing `m` when no task is focused does nothing
|
|
18
|
+
- Pressing `m` when focused on a `done` task does nothing (or shows status message)
|
|
19
|
+
- Router `task` field in `writeRouterReleaseEpic` is now set explicitly (currently it writes release+epic only)
|
|
20
|
+
- The `m` key does NOT work when any overlay is open (consistent with other board keys)
|
|
21
|
+
- The `m` key displays a status message confirming the router update: "Router set to {release} {epic}/{task}" or "Audit pending for {epic}" if last task
|
|
22
|
+
|
|
23
|
+
## Implementation Plan
|
|
24
|
+
|
|
25
|
+
- [x] Add `writeRouterTask(task data.Task)` method to `model.go`: reads current router, sets release/epic/task/state fields, writes via `data.WriteRouterState`
|
|
26
|
+
- [x] Add `m` key handler in `update.go` main switch (before epic panel routing, like `q`/`e`/`r`/`?`)
|
|
27
|
+
- [x] Handler: calls `focusedTask()` to get current task, calls `m.writeRouterTask()`, sets `m.StatusMessage` on success/error
|
|
28
|
+
- [x] Detect "last uncompleted task in epic" logic: scan `m.AllTasks` for the same epic, check if any are not done
|
|
29
|
+
- [x] Update `writeRouterReleaseEpic()` is unchanged (still only writes release+epic, used by navigation)
|
|
30
|
+
- [x] Run `make build && make test` to verify
|
|
31
|
+
|
|
32
|
+
## Strategic Visual Rework Plan
|
|
33
|
+
|
|
34
|
+
This task is reopened because the `m` hotkey work exposed router-priority and board rendering paths where terminal color fallback behavior still makes the TUI look patchy between black and gray. Do not continue with incremental one-widget fixes. Apply one bottom-up rendering policy.
|
|
35
|
+
|
|
36
|
+
- [x] Force Lipgloss to a deterministic 256-color profile before board rendering starts.
|
|
37
|
+
- [x] Change black 256-color fallbacks for Background, Surface, and Surface 2 to the same actual ANSI256 black value.
|
|
38
|
+
- [x] Centralize the background policy in `internal/styles/styles.go`: TUI surfaces emit no explicit background escapes; terminal default background remains the single source of truth.
|
|
39
|
+
- [x] Remove or avoid explicit background fills from nested panels/cards where they create padded gray bars.
|
|
40
|
+
- [x] Normalize focus borders across task columns, task cards, overlays, and epic sidebar. Prefer single-line box borders if rounded borders continue rendering as dash bars in Warp.
|
|
41
|
+
- [x] Add regression tests that fail if rendered board/card/router-priority output emits explicit background escapes.
|
|
42
|
+
- [x] Verify representative board states in both Windows Terminal and Warp after code tests pass.
|
|
43
|
+
|
|
44
|
+
## Context Log
|
|
45
|
+
|
|
46
|
+
Files read:
|
|
47
|
+
- .savepoint/router.md
|
|
48
|
+
- .savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md
|
|
49
|
+
- .savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md
|
|
50
|
+
- internal/board/model.go
|
|
51
|
+
- internal/board/update.go
|
|
52
|
+
- internal/board/update_test.go
|
|
53
|
+
- internal/board/board.go
|
|
54
|
+
- internal/board/view.go
|
|
55
|
+
- internal/board/column_test.go
|
|
56
|
+
- internal/board/view_test.go
|
|
57
|
+
- internal/board/render_policy_test.go
|
|
58
|
+
- internal/styles/palette.go
|
|
59
|
+
- internal/styles/styles.go
|
|
60
|
+
- internal/data/router.go
|
|
61
|
+
- internal/data/write.go
|
|
62
|
+
|
|
63
|
+
Estimated input tokens: 12000
|
|
64
|
+
|
|
65
|
+
Notes:
|
|
66
|
+
- Focused task comes from `m.Tasks[m.FocusedColumn][m.FocusedTask]`
|
|
67
|
+
- Router state derivation: if all other tasks in the same epic+release are `done`, set `state: audit-pending` and clear `task`; otherwise `state: task-building` with the task ID
|
|
68
|
+
- Focused test: `go test ./internal/board` passed
|
|
69
|
+
- Quality gate: `make build` could not run because `make` is unavailable in this shell
|
|
70
|
+
- Quality gate equivalent: `go run ./internal/buildtool build` passed
|
|
71
|
+
- Quality gate equivalent: `go test ./...` passed
|
|
72
|
+
- Strategic color rework: `lipgloss.SetColorProfile(termenv.ANSI256)` is set before board rendering.
|
|
73
|
+
- Strategic color rework: Background, Surface, and Surface 2 ANSI256 fallbacks now all use `16`.
|
|
74
|
+
- Strategic color rework: nested task/card/panel text no longer paints gray background fills; root-level full-width lines also avoid explicit background escapes.
|
|
75
|
+
- Strategic border rework: rounded borders replaced with single-line borders to avoid Warp dash-bar artifacts.
|
|
76
|
+
- Regression scan: no `RoundedBorder`, rounded border glyphs, or ANSI256 gray background fallback codes (`232`/`233`) remain under `internal/`.
|
|
77
|
+
- Remaining manual check: visually compare representative board states in Windows Terminal and Warp.
|
|
78
|
+
- Follow-up color consistency pass: removed explicit background painting from `Divider`, `HeaderFrame`, `BoardFrame`, and `RootLine`; this avoids mixing terminal-default cells with `48;5;16` cells after nested style resets.
|
|
79
|
+
- Regression tightened: `internal/board/render_policy_test.go` now fails on any `48;` background escape or basic black `40m` escape across board, card, detail, release/epic dropdown, and help render paths.
|
|
80
|
+
- Focused test: `go test ./internal/board` passed after the no-background policy change.
|
|
81
|
+
- Quality gate: `make build` still cannot run because `make` is unavailable in this shell.
|
|
82
|
+
- Quality gate equivalent: `go run ./internal/buildtool build` passed after the no-background policy change.
|
|
83
|
+
- Quality gate equivalent: `go test ./...` passed after the no-background policy change.
|
|
84
|
+
- Manual verification: user confirmed closeout after the PowerShell/Warp color consistency pass.
|
|
85
|
+
- Closeout focused test: `go test ./internal/board` passed.
|
|
86
|
+
- Closeout quality gate: `make build` failed because `make` is unavailable in this shell.
|
|
87
|
+
- Closeout quality gate equivalent: `go run ./internal/buildtool build` passed.
|
|
88
|
+
- Closeout quality gate equivalent: `go test ./...` passed.
|
package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E05-tasking-permissions/T005-update-help-overlay
|
|
3
|
+
status: planned
|
|
4
|
+
objective: "Add `m` key binding to the TUI help overlay"
|
|
5
|
+
depends_on: ["E05-tasking-permissions/T004-implement-m-hotkey"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# T005: Update Help Overlay
|
|
9
|
+
|
|
10
|
+
## Acceptance Criteria
|
|
11
|
+
|
|
12
|
+
- Help overlay (`?` key) shows `m` key binding: "m: update router"
|
|
13
|
+
- Key binding appears with consistent styling in the shortcuts list
|
|
14
|
+
- No other help entries modified
|
|
15
|
+
|
|
16
|
+
## Implementation Plan
|
|
17
|
+
|
|
18
|
+
- [ ] Add `helpRow("m", "update router")` to `RenderHelp` in `help.go`
|
|
19
|
+
- [ ] Run `make build && make test` to verify
|
|
20
|
+
|
|
21
|
+
## Context Log
|
|
22
|
+
|
|
23
|
+
Files read:
|
|
24
|
+
- .savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md
|
|
25
|
+
- .savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md
|
|
26
|
+
- internal/board/help.go
|
|
27
|
+
|
|
28
|
+
Estimated input tokens: 2000
|
|
29
|
+
|
|
30
|
+
Notes:
|
package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: E05-tasking-permissions/T006-tests-and-quality-gates
|
|
3
|
+
status: planned
|
|
4
|
+
objective: "Write unit tests for the `m` hotkey router update logic and verify quality gates pass"
|
|
5
|
+
depends_on: ["E05-tasking-permissions/T004-implement-m-hotkey", "E05-tasking-permissions/T005-update-help-overlay"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# T006: Tests & Quality Gates
|
|
9
|
+
|
|
10
|
+
## Acceptance Criteria
|
|
11
|
+
|
|
12
|
+
- Unit tests for `writeRouterTask()` covering:
|
|
13
|
+
- Focused task → router updated with release/epic/task/state
|
|
14
|
+
- Last uncompleted task → router shows `audit-pending`
|
|
15
|
+
- Focused `done` task → no-op
|
|
16
|
+
- Unit test for `m` key handler in update_test.go:
|
|
17
|
+
- Pressing `m` updates the model's StatusMessage
|
|
18
|
+
- Unit test for help overlay:
|
|
19
|
+
- `RenderHelp` output contains `m: update router`
|
|
20
|
+
- `go build -o savepoint main.go` passes
|
|
21
|
+
- `go test ./...` passes
|
|
22
|
+
|
|
23
|
+
## Implementation Plan
|
|
24
|
+
|
|
25
|
+
- [ ] Add `writeRouterTask_test.go` (or add to model_test.go) for router state derivation
|
|
26
|
+
- [ ] Add `m` key test to update_test.go
|
|
27
|
+
- [ ] Add help overlay test to help_test.go (if none exists, add basic test)
|
|
28
|
+
- [ ] Run `go build -o savepoint main.go`
|
|
29
|
+
- [ ] Run `go test ./...`
|
|
30
|
+
- [ ] Fix any failures
|
|
31
|
+
|
|
32
|
+
## Context Log
|
|
33
|
+
|
|
34
|
+
Files read:
|
|
35
|
+
- .savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md
|
|
36
|
+
- .savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md
|
|
37
|
+
- internal/board/model.go
|
|
38
|
+
- internal/board/update.go
|
|
39
|
+
- internal/board/help.go
|
|
40
|
+
- internal/board/update_test.go
|
|
41
|
+
- internal/board/model_test.go
|
|
42
|
+
- internal/board/help_test.go
|
|
43
|
+
|
|
44
|
+
Estimated input tokens: 4000
|
|
45
|
+
|
|
46
|
+
Notes:
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.1
|
|
3
|
+
name: "Board Polish & Navigation"
|
|
4
|
+
status: in_progress
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Release v1.1 — Board Polish & Navigation
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
v1.1 is the "love what you look at" release. It takes the functional board from v1 and makes it polished, reliable, and pleasant to navigate. The four epics cover layout robustness, multi-platform tooling, visual refinement, and a new epic navigation paradigm.
|
|
12
|
+
|
|
13
|
+
**v1 delivered:** a working Kanban board with phase transitions.
|
|
14
|
+
**v1.1 delivers:** a board that doesn't flicker on resize, builds everywhere, looks intentional, and treats epics as first-class navigable objects.
|
|
15
|
+
|
|
16
|
+
## What ships in v1.1
|
|
17
|
+
|
|
18
|
+
1. **TUI Optimisation (E01)** ✅ *Audited and complete*
|
|
19
|
+
- Next Activity indicator in header
|
|
20
|
+
- Naming conventions reconciled (Design.md → E##-Detail.md, PRD.md → v1-PRD.md)
|
|
21
|
+
- Virtual viewport scrolling for columns and detail overlay
|
|
22
|
+
- Column focus border stability — no content shift when switching columns
|
|
23
|
+
- All 7 tasks done
|
|
24
|
+
|
|
25
|
+
2. **Cross-Platform Compatibility (E02)** — *Not started*
|
|
26
|
+
- `make build`, `test`, `clean` work on Windows, Linux, macOS
|
|
27
|
+
- Linux amd64 + arm64 and macOS amd64 + arm64 build targets
|
|
28
|
+
- Smoke tests and versioned release artifacts
|
|
29
|
+
- 4 tasks planned
|
|
30
|
+
|
|
31
|
+
3. **UI Visual Refinement (E03)** — *Not started*
|
|
32
|
+
- Right-border clipping fixed on terminal resize
|
|
33
|
+
- Next Activity as a dedicated line below header with phase-aligned styling
|
|
34
|
+
- Checkbox rendering at sentence boundaries
|
|
35
|
+
- Width arithmetic audit — content fills available space exactly
|
|
36
|
+
- 4 tasks planned
|
|
37
|
+
|
|
38
|
+
4. **Epic Navigation (E04)** — *Not started*
|
|
39
|
+
- Epic sidebar becomes a focusable, navigable component
|
|
40
|
+
- ↑/↓ to navigate epics, ←/→ to enter/exit sidebar
|
|
41
|
+
- Enter opens an "Epic Detail" overlay showing E##-Detail.md content
|
|
42
|
+
- Existing `E` key dropdown retained
|
|
43
|
+
- 2 tasks planned
|
|
44
|
+
|
|
45
|
+
5. **Tasking Permissions & Router Updates (E05)** — *Not started*
|
|
46
|
+
- Agents can only set `status: in_progress`; user alone sets `done` or retreats
|
|
47
|
+
- New TUI `m` hotkey explicitly updates router to the focused task
|
|
48
|
+
- Router update decoupled from navigation — browse without side effects
|
|
49
|
+
- Last task in epic detected → router shows `audit-pending`
|
|
50
|
+
- 6 tasks planned
|
|
51
|
+
|
|
52
|
+
## Epic breakdown
|
|
53
|
+
|
|
54
|
+
| # | Epic | Status | Tasks |
|
|
55
|
+
|---|------|--------|-------|
|
|
56
|
+
| 01 | TUI Optimisation | Audited | 7/7 done |
|
|
57
|
+
| 02 | Cross-Platform Compatibility | Planned | 0/4 done |
|
|
58
|
+
| 03 | UI Visual Refinement | Planned | 0/4 done |
|
|
59
|
+
| 04 | Epic Navigation | Designing | 0/2 done |
|
|
60
|
+
| 05 | Tasking Permissions & Router Updates | Planned | 0/6 done |
|
|
61
|
+
|
|
62
|
+
## Success criteria
|
|
63
|
+
|
|
64
|
+
- `make build` and `make test` pass on Windows, Linux, and macOS
|
|
65
|
+
- Terminal resize at any width ≥ 40 produces no visual corruption
|
|
66
|
+
- Content fills the available terminal width exactly at every breakpoint
|
|
67
|
+
- Epic sidebar is navigable with ↑/↓, and Enter shows a detail overlay
|
|
68
|
+
- All existing v1 functionality is preserved unchanged
|
|
69
|
+
- `go build ./...` and `go test ./...` pass
|
|
70
|
+
|
|
71
|
+
## Known issues
|
|
72
|
+
|
|
73
|
+
- E03 has `Design.md` instead of the expected `E03-Detail.md` — rename to match convention (tracked in E01/T002 scope, may need a follow-up task)
|
|
74
|
+
|
|
75
|
+
## Risks
|
|
76
|
+
|
|
77
|
+
- **Build tooling scope creep.** E02 is pure Makefile work, but smoke-testing on non-Windows requires either CI or manual verification on actual Linux/macOS.
|
|
78
|
+
- **Naming convention holdout.** E03's `Design.md` may cause discovery or rendering issues if the board ever reads `E##-Detail.md` by pattern. Low priority — handled as a rename task if needed.
|
|
79
|
+
- **Epic panel is ≥120 only.** E04's features require a wide terminal — users on narrow terminals still use the `E` key dropdown.
|
package/.savepoint/router.md
CHANGED
|
@@ -1,136 +1,64 @@
|
|
|
1
1
|
# Agent State Machine
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Read order
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
1. This file (router.md)
|
|
6
|
+
2. Current state → next action
|
|
7
|
+
3. Active epic E##-Detail.md
|
|
8
|
+
4. Active task file
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
2. The current state below to know what to do next
|
|
9
|
-
3. The active epic Design
|
|
10
|
-
4. The active task file, when a task is selected
|
|
11
|
-
|
|
12
|
-
Read `.savepoint/PRD.md` only for project vision changes. Read `.savepoint/Design.md` only for architecture changes or audit closeout. Read `.savepoint/releases/v1/PRD.md` only for release planning or epic-order questions.
|
|
13
|
-
|
|
14
|
-
**Conditional read (token discipline):** if your active task touches **TUI rendering, theme, or visual design**, also read `.savepoint/visual-identity.md` after Design.md. Otherwise skip it — it's ~1.8K tokens you don't need.
|
|
10
|
+
Read `.savepoint/PRD.md` only for vision changes. Read `.savepoint/Design.md` only for architecture/audit.
|
|
15
11
|
|
|
16
12
|
## Current state
|
|
17
13
|
|
|
18
14
|
```yaml
|
|
19
15
|
state: task-building
|
|
20
16
|
release: v1.1
|
|
21
|
-
epic:
|
|
22
|
-
task:
|
|
23
|
-
next_action: Build
|
|
17
|
+
epic: E05-tasking-permissions
|
|
18
|
+
task: E05-tasking-permissions/T005-update-help-overlay
|
|
19
|
+
next_action: Build E05-tasking-permissions/T005-update-help-overlay.
|
|
24
20
|
```
|
|
25
21
|
|
|
26
|
-
## State →
|
|
27
|
-
|
|
28
|
-
<!-- AGENT: Read the state above. Find the matching block below. Follow it. -->
|
|
29
|
-
|
|
30
|
-
### `state: pre-implementation`
|
|
31
|
-
|
|
32
|
-
The project has its PRD and Design locked but no epics defined yet.
|
|
33
|
-
|
|
34
|
-
**Next action:**
|
|
35
|
-
|
|
36
|
-
1. Read `.savepoint/releases/v1/PRD.md` — the v1 release scope (epic list lives there).
|
|
37
|
-
2. Help the user define the epics list and confirm priority.
|
|
38
|
-
3. For each epic in order, create the directory `.savepoint/releases/v1/epics/E##-{epic-name}/` with a `Design.md` stub.
|
|
39
|
-
4. When epic E01 (scaffolding) is created, transition to `state: epic-design` for that epic.
|
|
40
|
-
|
|
41
|
-
**Do not** start writing code. We are still in planning.
|
|
42
|
-
|
|
43
|
-
### `state: epic-design`
|
|
44
|
-
|
|
45
|
-
An epic exists but its `Design.md` is empty or a stub.
|
|
46
|
-
|
|
47
|
-
**Next action:** Walk the user through filling out the epic's `Design.md`:
|
|
48
|
-
|
|
49
|
-
- What is this epic adding to the system?
|
|
50
|
-
- What components / files does it touch?
|
|
51
|
-
- What's the architectural delta vs the current state?
|
|
52
|
-
|
|
53
|
-
When complete, transition to `state: epic-task-breakdown` for this epic.
|
|
54
|
-
|
|
55
|
-
### `state: epic-task-breakdown`
|
|
22
|
+
## State → action
|
|
56
23
|
|
|
57
|
-
|
|
24
|
+
### pre-implementation
|
|
58
25
|
|
|
59
|
-
|
|
26
|
+
PRD + Design locked, no epics yet.
|
|
60
27
|
|
|
61
|
-
1.
|
|
62
|
-
2. Create or update the full epic task list — each task **independently buildable**, **objective-led**, with declared `depends_on`.
|
|
63
|
-
3. Each task file lives at `.savepoint/releases/v1/epics/{E##-epic}/tasks/TNNN-slug.md` with frontmatter:
|
|
64
|
-
```yaml
|
|
65
|
-
---
|
|
66
|
-
id: {E##-epic}/TNNN-slug
|
|
67
|
-
status: planned
|
|
68
|
-
objective: "<one sentence>"
|
|
69
|
-
depends_on: []
|
|
70
|
-
---
|
|
71
|
-
```
|
|
72
|
-
4. In the same pass, write each task's `## Implementation Plan` as inline `- [ ]` checkboxes.
|
|
73
|
-
5. When every task is planned, transition to `state: task-building` for the first unblocked task.
|
|
28
|
+
**Next:** 1) Read release PRD for epic list, 2) Define + confirm epic order, 3) Create epic stubs. Transition to `epic-design` for E01.
|
|
74
29
|
|
|
75
|
-
###
|
|
30
|
+
### epic-design
|
|
76
31
|
|
|
77
|
-
|
|
32
|
+
Epic E##-Detail.md is empty/stub.
|
|
78
33
|
|
|
79
|
-
**Next
|
|
34
|
+
**Next:** Define what this epic adds, files it touches, and architectural delta. Then transition to `epic-task-breakdown`.
|
|
80
35
|
|
|
81
|
-
###
|
|
36
|
+
### epic-task-breakdown
|
|
82
37
|
|
|
83
|
-
|
|
38
|
+
Epic exists, tasks missing.
|
|
84
39
|
|
|
85
|
-
**Next
|
|
40
|
+
**Next:** 1) Re-read epic, 2) Create task files at `tasks/TNNN-slug.md` with `status: planned`, `objective`, `depends_on`, 3) Add `## Implementation Plan` checkboxes per task. When all planned → first unblocked task.
|
|
86
41
|
|
|
87
|
-
###
|
|
42
|
+
### task-planning
|
|
88
43
|
|
|
89
|
-
|
|
44
|
+
Reserved for repair/late tasks.
|
|
90
45
|
|
|
91
|
-
**Next
|
|
46
|
+
**Next:** Write implementation plan, set `status: planned`, stop.
|
|
92
47
|
|
|
93
|
-
-
|
|
94
|
-
- `AGENTS.md` section — refresh Codebase Map entries from changed-module metadata; preserve existing rows.
|
|
95
|
-
- `epic-Design.md` section — add "implemented as:" notes and deltas from the original plan.
|
|
96
|
-
- `Quality Review` section — semantic-review findings against the 10 Code Style rules (advisory only).
|
|
97
|
-
|
|
98
|
-
Prefer delta-only edits (`Insert After`, `Replace`, `Delete`) anchored to exact text. Do not quote and replace entire large sections unless the whole section genuinely changed.
|
|
99
|
-
|
|
100
|
-
Proposal format:
|
|
101
|
-
|
|
102
|
-
```md
|
|
103
|
-
## Target File
|
|
104
|
-
|
|
105
|
-
`path/to/file.md`
|
|
106
|
-
|
|
107
|
-
## Replace
|
|
108
|
-
|
|
109
|
-
<exact old heading, marker, or section>
|
|
110
|
-
|
|
111
|
-
## With
|
|
112
|
-
|
|
113
|
-
<new content>
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Quality review section format:
|
|
117
|
-
|
|
118
|
-
```md
|
|
119
|
-
## Must Fix Before Close
|
|
120
|
-
|
|
121
|
-
## Carry Forward
|
|
122
|
-
|
|
123
|
-
## Already Fixed
|
|
124
|
-
```
|
|
48
|
+
### task-building
|
|
125
49
|
|
|
126
|
-
|
|
50
|
+
Task `in_progress`, depends satisfied.
|
|
127
51
|
|
|
128
|
-
|
|
52
|
+
**Next:** Execute plan, tick checkboxes, run quality gates, set `status: done`, update router to next task or `audit-pending`. Stop.
|
|
129
53
|
|
|
130
|
-
|
|
54
|
+
### audit-pending
|
|
131
55
|
|
|
132
|
-
|
|
56
|
+
Epic complete, needs audit before next epic.
|
|
133
57
|
|
|
134
|
-
|
|
58
|
+
**Next:** Read snapshot + epic E##-Detail.md + changed files. Write proposals to `.savepoint/audit/{release}/{E##-epic}/proposals.md`:
|
|
59
|
+
- Design.md delta
|
|
60
|
+
- AGENTS.md Codebase Map refresh
|
|
61
|
+
- Epic detail "implemented as" notes
|
|
62
|
+
- Quality review against Code Style rules
|
|
135
63
|
|
|
136
|
-
|
|
64
|
+
After user approves: apply proposals, mark epic `status: audited`, update Design.md `last_audited`, advance router.
|
package/AGENTS.md
CHANGED
|
@@ -1,141 +1,84 @@
|
|
|
1
1
|
# Agents Guide
|
|
2
2
|
|
|
3
|
-
Welcome, AI agent. This project (`savepoint`) uses its own conventions to manage its own build. You are about to dogfood the workflow.
|
|
4
|
-
|
|
5
3
|
## Workflow
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Savepoint ships with skills that define your role at each stage.
|
|
11
|
-
- `draft-prd`: Acts as a strict Product Manager to interrogate the user and write the PRD.
|
|
12
|
-
- `system-design`: Acts as a Staff Engineer mapping the architecture.
|
|
13
|
-
- `create-plan` / `create-task`: Acts as a Technical PM breaking work into Epics and ACs.
|
|
14
|
-
- `build-task`: Acts as the disciplined execution engine writing code and logging drift.
|
|
15
|
-
- `audit`: Acts as the QA Lead reconciling code with documentation.
|
|
16
|
-
|
|
17
|
-
**Skill Activation (CRITICAL):**
|
|
18
|
-
When you read `.savepoint/router.md`, you MUST activate the corresponding agent skill for the current state before taking any action. Use the `activate_skill` tool (or equivalent) for the appropriate phase:
|
|
19
|
-
- `state: draft-prd` -> Activate the `draft-prd` skill.
|
|
20
|
-
- `state: design` -> Activate the `system-design` skill.
|
|
21
|
-
- `state: planning` -> Activate the `create-plan` skill.
|
|
22
|
-
- `state: task-breakdown` -> Activate the `create-task` skill.
|
|
23
|
-
- `state: in-progress` -> Activate the `build-task` skill.
|
|
24
|
-
- `state: audit-pending` -> Activate the `audit` skill.
|
|
25
|
-
|
|
26
|
-
When you are about to write code, you must first read, in order:
|
|
27
|
-
|
|
28
|
-
1. `.savepoint/router.md` — current state and next action
|
|
29
|
-
2. The active epic Design: `.savepoint/releases/v1/epics/{E##-epic}/Design.md`
|
|
30
|
-
3. The active task file: `.savepoint/releases/v1/epics/{E##-epic}/tasks/{T###}-*.md`
|
|
31
|
-
4. Directly touched source/test files
|
|
32
|
-
|
|
33
|
-
Read `.savepoint/PRD.md` only for project vision changes, major scope questions, or when the router explicitly asks for it.
|
|
34
|
-
Read `.savepoint/Design.md` only when the task changes architecture or audit state. Read `.savepoint/releases/v1/PRD.md` only when planning epics, changing release scope, or resolving epic order.
|
|
35
|
-
|
|
36
|
-
**Conditional read:** if the active task touches TUI implementation, also read `agent-skills/ink-tui-design/SKILL.md` as the execution guide. If it touches TUI rendering, theme, or visual design, also read `.savepoint/visual-identity.md` as the visual guardrails. Otherwise skip the extra files — they are tokens you do not need.
|
|
37
|
-
|
|
38
|
-
**Do not load files outside the current task scope** unless the task requires it. Token discipline is the wedge of this product; we honor it on ourselves.
|
|
39
|
-
|
|
40
|
-
Planning and implementation are separate handoffs:
|
|
41
|
-
|
|
42
|
-
- Epic task breakdown and detailed task planning happen together in one pass by one planning agent.
|
|
43
|
-
- Each task file must be independently buildable, objective-led, include explicit `depends_on` IDs, contain `## Acceptance Criteria` (observable outcomes) before `## Implementation Plan` (build checklist), and include a `## Context Log` for files read, estimated input tokens, and notes.
|
|
44
|
-
- Implementation happens one task at a time and may be handed to any agent. Clear context between tasks by default; rehydrate only from the router, active epic Design, active task file, and directly touched source/test files.
|
|
45
|
-
- During implementation, run focused tests for the touched behavior first; reserve the full quality-gate suite for task closeout.
|
|
5
|
+
1. Read `.savepoint/router.md` — state + next action
|
|
6
|
+
2. Activate skill per table below
|
|
7
|
+
3. Read: router → epic → task → source files
|
|
46
8
|
|
|
47
|
-
|
|
48
|
-
- Any explicit audit request overrides the normal handoff timing for that epic. Persist the audit to `.savepoint/audit/{E##-epic}/snapshot.md` and `.savepoint/audit/{E##-epic}/proposals.md` before replying; do not stop at chat-only findings.
|
|
9
|
+
## Skill Activation
|
|
49
10
|
|
|
50
|
-
|
|
11
|
+
| State | Skill |
|
|
12
|
+
|-------|-------|
|
|
13
|
+
| pre-implementation | savepoint-draft-prd |
|
|
14
|
+
| epic-design | savepoint-system-design |
|
|
15
|
+
| epic-task-breakdown | savepoint-create-task |
|
|
16
|
+
| task-building | savepoint-build-task |
|
|
17
|
+
| audit-pending | savepoint-audit |
|
|
51
18
|
|
|
52
|
-
|
|
19
|
+
Use `skill` tool.
|
|
53
20
|
|
|
54
|
-
|
|
21
|
+
Read `.savepoint/PRD.md` only for vision changes, `.savepoint/Design.md` only for architecture/audit.
|
|
55
22
|
|
|
56
|
-
|
|
23
|
+
## Task Status
|
|
57
24
|
|
|
58
|
-
|
|
25
|
+
- `status`: only `planned`, `in_progress`, or `done`
|
|
26
|
+
- `phase` (build/test/audit): only when `status: in_progress`
|
|
27
|
+
- Never: todo, doing, blocked, review, audit
|
|
59
28
|
|
|
60
|
-
|
|
29
|
+
## Implementation
|
|
61
30
|
|
|
62
|
-
1.
|
|
63
|
-
2.
|
|
64
|
-
3.
|
|
65
|
-
4. Run
|
|
66
|
-
5.
|
|
67
|
-
6.
|
|
68
|
-
7.
|
|
69
|
-
8. **Stop. Prompt the user:**
|
|
70
|
-
> "Task {id} is done. Quality gates: {pass/fail list}. Router updated to {next_action}. Review the changes, then tell me to continue."
|
|
31
|
+
1. Read task's `## Acceptance Criteria` + `## Implementation Plan`
|
|
32
|
+
2. Execute in order, tick checkboxes
|
|
33
|
+
3. Verify every AC has passing test/outcome
|
|
34
|
+
4. Run quality gates (build + test)
|
|
35
|
+
5. Update task: tick boxes, fill `## Context Log`, set `status: done`
|
|
36
|
+
6. Update router.md: next task or `audit-pending`
|
|
37
|
+
7. **Stop. Prompt user before continuing.**
|
|
71
38
|
|
|
72
|
-
|
|
39
|
+
## Drift Check
|
|
73
40
|
|
|
74
|
-
|
|
41
|
+
- New files/modules not in Codebase Map?
|
|
42
|
+
- Architecture changed from Design.md?
|
|
75
43
|
|
|
76
|
-
|
|
44
|
+
If yes → append `## Drift Notes` to task file.
|
|
77
45
|
|
|
78
|
-
|
|
79
|
-
- Did this task change the architecture from what `.savepoint/Design.md` describes?
|
|
46
|
+
## Audit Handoff
|
|
80
47
|
|
|
81
|
-
|
|
82
|
-
- `Drift: {file} added, not yet in Codebase Map.`
|
|
83
|
-
- `Drift: {section} in Design.md may need update.`
|
|
48
|
+
The agent that builds an epic **must not audit it**. Start a fresh session.
|
|
84
49
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
## Audit Handoff Rule
|
|
88
|
-
|
|
89
|
-
The agent session that builds an epic **must not** run its audit. Audit requires fresh eyes.
|
|
90
|
-
|
|
91
|
-
When all tasks in an epic are `done`:
|
|
92
|
-
1. Update `router.md` to `state: audit-pending` for that epic.
|
|
93
|
-
2. Stop. Tell the user: "Epic {id} is complete. Start a new agent session for the audit."
|
|
94
|
-
3. The user starts a fresh session. The new agent reads `router.md`, sees `audit-pending`, and follows the audit-reconciliation instructions.
|
|
50
|
+
## Code Style
|
|
95
51
|
|
|
96
|
-
|
|
52
|
+
1. One job per file
|
|
53
|
+
2. One-sentence functions
|
|
54
|
+
3. Test branches
|
|
55
|
+
4. Types are documentation
|
|
56
|
+
5. Build, don't speculate
|
|
57
|
+
6. Errors at boundaries
|
|
58
|
+
7. One source of truth
|
|
59
|
+
8. Comments explain WHY
|
|
60
|
+
9. Content in data files
|
|
61
|
+
10. Small diffs
|
|
97
62
|
|
|
98
|
-
## Build
|
|
63
|
+
## Build
|
|
99
64
|
|
|
100
65
|
```bash
|
|
101
|
-
make build
|
|
102
|
-
make test # go test ./...
|
|
103
|
-
make run # go run main.go
|
|
104
|
-
make clean # rm -f savepoint
|
|
66
|
+
make build && make test
|
|
105
67
|
```
|
|
106
68
|
|
|
107
|
-
## Code Style
|
|
108
|
-
|
|
109
|
-
1. **One job per file.** If a file does two things, split it.
|
|
110
|
-
2. **One-sentence rule.** If you can't describe a function in one sentence, refactor.
|
|
111
|
-
3. **Test what branches.** Logic with if/else/switch gets a test. Pure rendering: skip.
|
|
112
|
-
4. **Types are documentation.** No `any`. Let the compiler help.
|
|
113
|
-
5. **Build, don't speculate.** No code for hypothetical futures.
|
|
114
|
-
6. **Errors at boundaries.** Handle failure where data enters or leaves the system.
|
|
115
|
-
7. **One source of truth.** State lives in one place. No syncing copies.
|
|
116
|
-
8. **Comments explain WHY,** not what. If removing the comment wouldn't confuse a future reader, delete it.
|
|
117
|
-
9. **Content in data files.** Markdown/JSON/YAML, not strings in code.
|
|
118
|
-
10. **Small diffs.** Each task touches as few files as possible.
|
|
119
|
-
|
|
120
69
|
## Codebase Map
|
|
121
70
|
|
|
122
|
-
| Module
|
|
123
|
-
|
|
124
|
-
| `main.go`
|
|
125
|
-
| `internal/board/`
|
|
126
|
-
| `internal/
|
|
127
|
-
| `internal/
|
|
128
|
-
| `
|
|
129
|
-
| `
|
|
130
|
-
| `
|
|
131
|
-
|
|
132
|
-
## CLI rules for agents
|
|
133
|
-
|
|
134
|
-
**Never run `savepoint` commands.** The CLI is for the human. Edit files directly.
|
|
135
|
-
|
|
136
|
-
(For this repo specifically: `savepoint` doesn't exist yet — we're building it. Even once it exists, this rule stands.)
|
|
71
|
+
| Module | Purpose |
|
|
72
|
+
|--------|---------|
|
|
73
|
+
| `main.go` | CLI entrypoint, --version |
|
|
74
|
+
| `internal/board/` | TUI board, overlays, epic sidebar, status glyphs |
|
|
75
|
+
| `internal/buildtool/` | Makefile helper, cross-compile, archives |
|
|
76
|
+
| `internal/data/` | Task/router models, frontmatter parsing, discovery |
|
|
77
|
+
| `internal/styles/` | Atari-Noir palette, TUI styles |
|
|
78
|
+
| `cmd/` | CLI subcommands |
|
|
79
|
+
| `templates/` | Scaffold markdown, YAML, prompts |
|
|
80
|
+
| `agent-skills/` | Phase-specific skill guides |
|
|
137
81
|
|
|
138
|
-
##
|
|
82
|
+
## CLI Rules
|
|
139
83
|
|
|
140
|
-
|
|
141
|
-
instructions reliably. If you are not one of those, advise the user before proceeding with planning steps.
|
|
84
|
+
**Never run `savepoint` commands.** The CLI is for the human. Edit files directly.
|
package/Makefile
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
.PHONY: build test run clean
|
|
1
|
+
.PHONY: build test run clean build-linux build-darwin build-all dist smoke-test
|
|
2
|
+
|
|
3
|
+
VERSION ?=
|
|
2
4
|
|
|
3
5
|
build:
|
|
4
|
-
go
|
|
6
|
+
go run ./internal/buildtool -version "$(VERSION)" build
|
|
5
7
|
|
|
6
8
|
test:
|
|
7
9
|
go test ./...
|
|
@@ -10,4 +12,18 @@ run:
|
|
|
10
12
|
go run main.go
|
|
11
13
|
|
|
12
14
|
clean:
|
|
13
|
-
|
|
15
|
+
go run ./internal/buildtool -version "$(VERSION)" clean
|
|
16
|
+
|
|
17
|
+
build-linux:
|
|
18
|
+
go run ./internal/buildtool -version "$(VERSION)" build-linux
|
|
19
|
+
|
|
20
|
+
build-darwin:
|
|
21
|
+
go run ./internal/buildtool -version "$(VERSION)" build-darwin
|
|
22
|
+
|
|
23
|
+
build-all: build-linux build-darwin
|
|
24
|
+
|
|
25
|
+
dist:
|
|
26
|
+
go run ./internal/buildtool -version "$(VERSION)" dist
|
|
27
|
+
|
|
28
|
+
smoke-test:
|
|
29
|
+
go run ./internal/buildtool -version "$(VERSION)" smoke-test
|