savepoint 1.0.0 → 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 +8 -1
- package/.savepoint/Design.md +26 -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/v1/E06-atari-noir-layout/proposals.md +130 -0
- package/.savepoint/audit/v1/E06-atari-noir-layout/snapshot.md +84 -0
- 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/config.yml +3 -3
- 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/E06-Detail.md +62 -0
- 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/T007-detail-card-fixes.md +7 -7
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +10 -8
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +16 -9
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +27 -22
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/E01-Detail.md +40 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-next-activity-header.md +56 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T002-rename-epic-design-files.md +38 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T003-rename-release-prd.md +28 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T004-update-instruction-files.md +51 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T005-update-cross-references.md +45 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T006-column-and-detail-scrolling.md +68 -0
- 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/E02-Detail.md +49 -0
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T001-fix-makefile.md +37 -0
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T002-linux-build-target.md +38 -0
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T003-macos-build-target.md +36 -0
- package/.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T004-smoke-tests-and-artifacts.md +59 -0
- 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/.savepoint/visual-identity.md +4 -3
- package/AGENTS.md +56 -113
- package/Makefile +19 -3
- package/README.md +7 -6
- 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/go.mod +4 -1
- package/go.sum +2 -0
- package/internal/board/board.go +66 -14
- package/internal/board/board_test.go +124 -0
- package/internal/board/card.go +40 -3
- package/internal/board/card_test.go +121 -14
- package/internal/board/column.go +40 -5
- package/internal/board/column_test.go +65 -10
- package/internal/board/detail.go +115 -23
- package/internal/board/detail_test.go +132 -25
- 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 +146 -23
- package/internal/board/render_policy_test.go +77 -0
- package/internal/board/status.go +23 -0
- package/internal/board/update.go +300 -9
- package/internal/board/update_test.go +166 -0
- package/internal/board/view.go +141 -17
- package/internal/board/view_test.go +161 -3
- package/internal/board/watch.go +100 -0
- package/internal/buildtool/main.go +219 -0
- package/internal/data/parser.go +39 -1
- package/internal/data/parser_test.go +43 -2
- package/internal/data/task.go +22 -2
- package/internal/styles/palette.go +9 -7
- package/internal/styles/styles.go +42 -25
- package/main.go +9 -0
- package/package.json +5 -4
- 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/epics/E06-atari-noir-layout/Design.md +0 -42
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/Design.md +0 -26
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-border-resize-fix.md +0 -35
- 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-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
|
@@ -31,29 +31,29 @@
|
|
|
31
31
|
## Insert After
|
|
32
32
|
|
|
33
33
|
```md
|
|
34
|
-
| `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/
|
|
34
|
+
| `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/E02-Detail.md) | Shared data-reader boundary error sentinels |
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
## With
|
|
38
38
|
|
|
39
39
|
```md
|
|
40
|
-
| `internal/board/model.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/
|
|
41
|
-
| `internal/board/update.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/
|
|
42
|
-
| `internal/board/layout.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/
|
|
43
|
-
| `internal/board/view.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/
|
|
44
|
-
| `internal/board/column.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/
|
|
45
|
-
| `internal/board/card.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/
|
|
46
|
-
| `internal/board/epic_panel.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/
|
|
47
|
-
| `internal/board/detail.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/
|
|
48
|
-
| `internal/board/release.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/
|
|
49
|
-
| `internal/board/help.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/
|
|
50
|
-
| `internal/styles/*.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/
|
|
51
|
-
| `internal/board/*_test.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/
|
|
40
|
+
| `internal/board/model.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) | Bubble Tea board state for grouped tasks, focused column/task, selected release/epic, responsive size, and active overlay |
|
|
41
|
+
| `internal/board/update.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) | Keyboard and window-size update handling for board navigation, overlays, selectors, and quit behavior |
|
|
42
|
+
| `internal/board/layout.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) | Responsive board geometry breakpoints and column/sidebar width calculation |
|
|
43
|
+
| `internal/board/view.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) | Board view composition, status bar, responsive columns, and overlay placement helpers |
|
|
44
|
+
| `internal/board/column.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Column renderer with status header, task count, empty state, and focused border styling |
|
|
45
|
+
| `internal/board/card.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Task card renderer with phase glyphs, metadata dimming, truncation, and focus styling |
|
|
46
|
+
| `internal/board/epic_panel.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Wide epic sidebar and narrow epic selector dropdown renderers |
|
|
47
|
+
| `internal/board/detail.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Task detail overlay renderer with task metadata, description, acceptance criteria, and phase labels |
|
|
48
|
+
| `internal/board/release.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Release selector dropdown renderer and current-release cursor lookup |
|
|
49
|
+
| `internal/board/help.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Keyboard shortcut help overlay renderer |
|
|
50
|
+
| `internal/styles/*.go` | [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Atari-Noir Lip Gloss palette and shared board, card, overlay, glyph, status, and tag styles |
|
|
51
|
+
| `internal/board/*_test.go` | [E03-board-tui-core](.savepoint/releases/v1/epics/E03-board-tui-core/E03-Detail.md) / [E04-board-components](.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md) | Go board model, layout, update, view, component, selector, detail, and help tests |
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
## Target File
|
|
55
55
|
|
|
56
|
-
`.savepoint/releases/v1/epics/E04-board-components/
|
|
56
|
+
`.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md`
|
|
57
57
|
|
|
58
58
|
## Insert After
|
|
59
59
|
|
|
@@ -16,7 +16,7 @@ next_action: "Epic E04-board-components complete. Start a new agent session for
|
|
|
16
16
|
|
|
17
17
|
## Epic Scope
|
|
18
18
|
|
|
19
|
-
Epic design: `.savepoint/releases/v1/epics/E04-board-components/
|
|
19
|
+
Epic design: `.savepoint/releases/v1/epics/E04-board-components/E04-Detail.md`
|
|
20
20
|
|
|
21
21
|
Tasks:
|
|
22
22
|
|
|
@@ -64,7 +64,7 @@ test/
|
|
|
64
64
|
| `.savepoint/audit/E05-init-command/proposals.md` | Single audit proposal bundle, pending. |
|
|
65
65
|
| `.savepoint/metrics/context-bench.md` | Context rows for E05 task building. |
|
|
66
66
|
| `AGENTS.md` | Codebase Map needs E05 module refresh. |
|
|
67
|
-
| `.savepoint/releases/v1/epics/E05-init-command/
|
|
67
|
+
| `.savepoint/releases/v1/epics/E05-init-command/E05-Detail.md` | Epic Design needs implemented-as notes. |
|
|
68
68
|
|
|
69
69
|
## New files introduced by E05
|
|
70
70
|
|
|
@@ -23,19 +23,19 @@
|
|
|
23
23
|
## Insert After
|
|
24
24
|
|
|
25
25
|
```md
|
|
26
|
-
| `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/
|
|
26
|
+
| `internal/data/errors.go` | [E02-data-readers](.savepoint/releases/v1/epics/E02-data-readers/E02-Detail.md) | Shared data-reader boundary error sentinels |
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
## With
|
|
30
30
|
|
|
31
31
|
```md
|
|
32
|
-
| `internal/data/write.go` | [E05-phase-transitions](.savepoint/releases/v1/epics/E05-phase-transitions/
|
|
33
|
-
| `internal/board/transitions.go` | [E05-phase-transitions](.savepoint/releases/v1/epics/E05-phase-transitions/
|
|
32
|
+
| `internal/data/write.go` | [E05-phase-transitions](.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md) | Mtime-checked task status/phase and router current-state write helpers |
|
|
33
|
+
| `internal/board/transitions.go` | [E05-phase-transitions](.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md) | Board phase advance/retreat lifecycle and dependency gate checks |
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
## Target File
|
|
37
37
|
|
|
38
|
-
`.savepoint/releases/v1/epics/E05-phase-transitions/
|
|
38
|
+
`.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md`
|
|
39
39
|
|
|
40
40
|
## Insert After
|
|
41
41
|
|
|
@@ -14,7 +14,7 @@ next_action: "Epic E05-phase-transitions is complete. Start a new agent session
|
|
|
14
14
|
|
|
15
15
|
## Epic Scope
|
|
16
16
|
|
|
17
|
-
- `.savepoint/releases/v1/epics/E05-phase-transitions/
|
|
17
|
+
- `.savepoint/releases/v1/epics/E05-phase-transitions/E05-Detail.md`
|
|
18
18
|
- `.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md`
|
|
19
19
|
- `.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md`
|
|
20
20
|
- `.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md`
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# E06 Atari-Noir Layout Audit Proposals
|
|
2
|
+
|
|
3
|
+
## Target File
|
|
4
|
+
|
|
5
|
+
`.savepoint/Design.md`
|
|
6
|
+
|
|
7
|
+
## Replace
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
- **Board command** (`savepoint board`) reads project, non-TTY fallback, Ink TUI, transition gates, mtime writes, audit signaling (epic E06).
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## With
|
|
14
|
+
|
|
15
|
+
```md
|
|
16
|
+
- **Board command** (`savepoint board`) reads project state, renders the Atari-Noir TUI board, supports release/epic filtering, detail overlays, task status transitions with mtime-guarded writes, router priority markers, and fsnotify-based task auto-refresh (epic E06).
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Target File
|
|
20
|
+
|
|
21
|
+
`.savepoint/Design.md`
|
|
22
|
+
|
|
23
|
+
## Replace
|
|
24
|
+
|
|
25
|
+
```md
|
|
26
|
+
**Layout:** single screen with a 5-column Kanban board and detail pane. Non-TTY output uses `src/tui/render/plain-table.ts`.
|
|
27
|
+
|
|
28
|
+
**Implementation modules:** see AGENTS.md Codebase Map (E06 and E07 epic rows).
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## With
|
|
32
|
+
|
|
33
|
+
```md
|
|
34
|
+
**Layout:** single screen with a 3-column task board (`planned`, `in_progress`, `done`), optional epic sidebar on wide terminals, centered overlays for release/epic/help/task detail, static Atari-Noir header/footer, and navigation hints. Non-TTY output remains a plain table fallback.
|
|
35
|
+
|
|
36
|
+
**Board persistence and refresh:** task status transitions write canonical task frontmatter through `internal/data.WriteTaskStatus` with mtime conflict checks. The board watches `.savepoint/releases/` recursively with fsnotify and reloads task data after debounced file changes.
|
|
37
|
+
|
|
38
|
+
**Implementation modules:** see AGENTS.md Codebase Map.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Target File
|
|
42
|
+
|
|
43
|
+
`AGENTS.md`
|
|
44
|
+
|
|
45
|
+
## Replace
|
|
46
|
+
|
|
47
|
+
```md
|
|
48
|
+
| `internal/board/` | TUI board components, models, layouts, transitions, and rendering logic |
|
|
49
|
+
| `internal/data/` | Task data models, frontmatter parsing, project configuration, routing, and generic file readers |
|
|
50
|
+
| `internal/styles/` | Shared visual design system, TUI styling, and palettes |
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## With
|
|
54
|
+
|
|
55
|
+
```md
|
|
56
|
+
| `internal/board/` | TUI board models, layout, rendering, overlays, task transitions, router priority markers, and fsnotify refresh |
|
|
57
|
+
| `internal/data/` | Task/router/config models, frontmatter parsing, checklist state parsing, mtime-guarded writes, discovery, and generic file readers |
|
|
58
|
+
| `internal/styles/` | Atari-Noir palette constants, terminal color fallbacks, shared TUI styles, semantic glyph/tag styles, and footer/header styling |
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Target File
|
|
62
|
+
|
|
63
|
+
`.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md`
|
|
64
|
+
|
|
65
|
+
## Replace
|
|
66
|
+
|
|
67
|
+
```md
|
|
68
|
+
# Epic E07: Atari-Noir Layout Uplift
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## With
|
|
72
|
+
|
|
73
|
+
```md
|
|
74
|
+
# Epic E06: Atari-Noir Layout Uplift
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Target File
|
|
78
|
+
|
|
79
|
+
`.savepoint/releases/v1/epics/E06-atari-noir-layout/E06-Detail.md`
|
|
80
|
+
|
|
81
|
+
## Insert After
|
|
82
|
+
|
|
83
|
+
```md
|
|
84
|
+
| `internal/board/epic_panel.go` | Refine epic panel layout |
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## With
|
|
88
|
+
|
|
89
|
+
```md
|
|
90
|
+
|
|
91
|
+
## Implemented As
|
|
92
|
+
|
|
93
|
+
- `internal/styles/palette.go` defines the Atari-Noir hex palette plus ANSI256/ANSI16 fallbacks.
|
|
94
|
+
- `internal/styles/styles.go` centralizes header, divider, footer, column, card, detail, glyph, and semantic tag styles.
|
|
95
|
+
- `internal/board/view.go` renders the static SavePoint header, the static `PLAN │ BUILD │ AUDIT` footer, subdued navigation hints, and overlay composition.
|
|
96
|
+
- `internal/board/card.go` wraps long task titles instead of truncating them and uses a green `▣` marker for the router-priority task.
|
|
97
|
+
- `internal/board/detail.go` adds spacing below Acceptance Criteria and Implementation Plan headings, renders checklist state with `☑`/`□`, and labels the router-priority task.
|
|
98
|
+
- `internal/data/task.go` and `internal/data/parser.go` represent Implementation Plan items as `CheckItem{Text, Done}` and parse `- [x]`, `- [ ]`, and legacy `- ` items.
|
|
99
|
+
- `internal/data/write.go` persists task status and phase changes with mtime conflict protection.
|
|
100
|
+
- `internal/board/watch.go` adds fsnotify-based recursive release directory watching, 100ms debounce, and reload messages used by `internal/board/update.go`.
|
|
101
|
+
|
|
102
|
+
## Implementation Deltas
|
|
103
|
+
|
|
104
|
+
- The original visual-only scope expanded to include board usability fixes requested during E06: footer navigation hints, detail overlay spacing, card title word-wrap, checklist state rendering, router priority markers, and auto-refresh on task file changes.
|
|
105
|
+
- The current implementation still uses rounded frames/borders on header, board, columns, cards, and epic panel. That differs from the design language of "unnecessary borders removed" and should be reconciled before closing the visual uplift.
|
|
106
|
+
- `styles.Divider` exists but the main view does not render explicit full-width top/bottom divider lines; divider-like output currently comes from framed containers and component separators.
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Quality Review
|
|
110
|
+
|
|
111
|
+
## Must Fix Before Close
|
|
112
|
+
|
|
113
|
+
- None remaining after approval closeout.
|
|
114
|
+
|
|
115
|
+
## Carry Forward
|
|
116
|
+
|
|
117
|
+
- `internal/board/watch.go:17`: watcher errors are consumed silently. This is acceptable for v1 audit as non-blocking resilience, but a future task should surface watcher failures in `StatusMessage` or diagnostics.
|
|
118
|
+
- `internal/board/update.go:68` and `internal/board/update.go:84`: `ErrMtimeConflict` is intentionally non-destructive, but the user receives no visible conflict message because that error is ignored. Consider showing a manual-refresh message so conflicts are understandable.
|
|
119
|
+
- `go.mod`: `github.com/fsnotify/fsnotify` is currently listed as indirect even though project code imports it directly. `go mod tidy` may fix this metadata.
|
|
120
|
+
- Root instruction drift: `AGENTS.md` references `agent-skills/audit/SKILL.md`, but the repository contains `agent-skills/savepoint-audit/SKILL.md`.
|
|
121
|
+
|
|
122
|
+
## Already Fixed
|
|
123
|
+
|
|
124
|
+
- `go build ./...`: PASS during audit.
|
|
125
|
+
- `go test ./...`: PASS during audit.
|
|
126
|
+
- Approval closeout added explicit full-width divider lines rendered through `styles.Divider`.
|
|
127
|
+
- Approval closeout removed unnecessary borders from unfocused header, board, column, card, and epic panel surfaces while preserving focused Atari Orange borders.
|
|
128
|
+
- T008 checklist parsing preserves checked/unchecked state in `data.CheckItem` and renders checked items distinctly.
|
|
129
|
+
- T009 router priority marker is wired through model, card, column, and detail rendering.
|
|
130
|
+
- T010 auto-refresh watcher is isolated in `internal/board/watch.go` and cleanly disabled in tests when `Model.Watcher` is nil.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: audit-snapshot
|
|
3
|
+
release: v1
|
|
4
|
+
epic: E06-atari-noir-layout
|
|
5
|
+
created: 2026-05-02
|
|
6
|
+
mode: manual
|
|
7
|
+
reason: "Audit CLI snapshot was unavailable; router authorized one manual snapshot from known epic scope."
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# E06 Atari-Noir Layout Snapshot
|
|
11
|
+
|
|
12
|
+
## Router State
|
|
13
|
+
|
|
14
|
+
- `state`: `audit-pending`
|
|
15
|
+
- `release`: `v1`
|
|
16
|
+
- `epic`: `E06-atari-noir-layout`
|
|
17
|
+
- `task`: `E06-atari-noir-layout/T010-auto-refresh-watcher`
|
|
18
|
+
- `next_action`: All E06 tasks done. Start new agent session for epic audit.
|
|
19
|
+
|
|
20
|
+
## Epic Scope
|
|
21
|
+
|
|
22
|
+
E06 implemented the Atari-Noir TUI layout uplift and related board usability fixes:
|
|
23
|
+
|
|
24
|
+
- Atari-Noir palette/style usage in `internal/styles/`.
|
|
25
|
+
- Header/footer rendering, navigation hints, and board layout adjustments in `internal/board/view.go`.
|
|
26
|
+
- Card title wrapping and detail overlay spacing/checklist rendering in `internal/board/card.go` and `internal/board/detail.go`.
|
|
27
|
+
- Router priority marker support across board model/card/detail rendering.
|
|
28
|
+
- Task checklist state parsing in `internal/data/parser.go` and `internal/data/task.go`.
|
|
29
|
+
- File watcher auto-refresh and task status disk persistence in `internal/board/watch.go`, `internal/board/board.go`, `internal/board/model.go`, and `internal/board/update.go`.
|
|
30
|
+
|
|
31
|
+
## Task Files Reviewed
|
|
32
|
+
|
|
33
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md`
|
|
34
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md`
|
|
35
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md`
|
|
36
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md`
|
|
37
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md`
|
|
38
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md`
|
|
39
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md`
|
|
40
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md`
|
|
41
|
+
- `.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md`
|
|
42
|
+
|
|
43
|
+
## Changed Files In Epic Scope
|
|
44
|
+
|
|
45
|
+
- `go.mod`
|
|
46
|
+
- `go.sum`
|
|
47
|
+
- `internal/board/board.go`
|
|
48
|
+
- `internal/board/card.go`
|
|
49
|
+
- `internal/board/card_test.go`
|
|
50
|
+
- `internal/board/column.go`
|
|
51
|
+
- `internal/board/column_test.go`
|
|
52
|
+
- `internal/board/detail.go`
|
|
53
|
+
- `internal/board/detail_test.go`
|
|
54
|
+
- `internal/board/epic_panel.go`
|
|
55
|
+
- `internal/board/layout.go`
|
|
56
|
+
- `internal/board/model.go`
|
|
57
|
+
- `internal/board/update.go`
|
|
58
|
+
- `internal/board/view.go`
|
|
59
|
+
- `internal/board/view_test.go`
|
|
60
|
+
- `internal/board/watch.go`
|
|
61
|
+
- `internal/data/parser.go`
|
|
62
|
+
- `internal/data/parser_test.go`
|
|
63
|
+
- `internal/data/task.go`
|
|
64
|
+
- `internal/data/write.go`
|
|
65
|
+
- `internal/styles/palette.go`
|
|
66
|
+
- `internal/styles/styles.go`
|
|
67
|
+
|
|
68
|
+
## Drift Notes Found
|
|
69
|
+
|
|
70
|
+
- `T002-header-and-dividers.md`: `internal/styles/palette.go` and `internal/styles/styles.go` were not yet reflected with sufficient specificity in the Codebase Map.
|
|
71
|
+
|
|
72
|
+
## Verification
|
|
73
|
+
|
|
74
|
+
- `go build ./...`: PASS
|
|
75
|
+
- `go test ./...`: PASS
|
|
76
|
+
- Approval closeout rerun: `go build ./...` PASS, `go test ./...` PASS.
|
|
77
|
+
- `make build` and `make test`: not run; `make` is not installed on PATH in this environment.
|
|
78
|
+
|
|
79
|
+
## Audit Observations
|
|
80
|
+
|
|
81
|
+
- `agent-skills/audit/SKILL.md` is referenced by the root instructions but does not exist; `agent-skills/savepoint-audit/SKILL.md` was used as the equivalent audit skill.
|
|
82
|
+
- The epic Design title says `Epic E07`; the folder, router, and task IDs identify this epic as `E06-atari-noir-layout`.
|
|
83
|
+
- The implementation added scoped behavior beyond the original visual uplift: footer navigation hints, detail overlay spacing, card word-wrap, checklist state parsing/rendering, router priority markers, and fsnotify auto-refresh.
|
|
84
|
+
- Visual ACs around explicit full-width dividers and border reduction are not fully represented in `internal/board/view.go` and `internal/styles/styles.go`; see proposals quality review.
|
|
@@ -32,18 +32,18 @@ next_action: Run savepoint audit for E07-audit-pipeline.
|
|
|
32
32
|
| M | .claude/settings.local.json |
|
|
33
33
|
| M | .savepoint/Design.md |
|
|
34
34
|
| M | .savepoint/metrics/context-bench.md |
|
|
35
|
-
| M | .savepoint/releases/v1/PRD.md |
|
|
36
|
-
| M | .savepoint/releases/v1/epics/E05-init-command/
|
|
35
|
+
| M | .savepoint/releases/v1/v1-PRD.md |
|
|
36
|
+
| M | .savepoint/releases/v1/epics/E05-init-command/E05-Detail.md |
|
|
37
37
|
| M | .savepoint/releases/v1/epics/E05-init-command/tasks/T001-init-cli-contract.md |
|
|
38
38
|
| M | .savepoint/releases/v1/epics/E05-init-command/tasks/T002-target-validation.md |
|
|
39
39
|
| M | .savepoint/releases/v1/epics/E05-init-command/tasks/T003-scaffold-writer.md |
|
|
40
40
|
| M | .savepoint/releases/v1/epics/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md |
|
|
41
41
|
| M | .savepoint/releases/v1/epics/E05-init-command/tasks/T005-dev-deps-install-option.md |
|
|
42
42
|
| M | .savepoint/releases/v1/epics/E05-init-command/tasks/T006-init-command-integration.md |
|
|
43
|
-
| M | .savepoint/releases/v1/epics/E06-tui-board/
|
|
44
|
-
| D | .savepoint/releases/v1/epics/E08-doctor-command/
|
|
45
|
-
| D | .savepoint/releases/v1/epics/E09-docs-and-packaging/
|
|
46
|
-
| D | .savepoint/releases/v1/epics/E10-release-validation/
|
|
43
|
+
| M | .savepoint/releases/v1/epics/E06-tui-board/E06-Detail.md |
|
|
44
|
+
| D | .savepoint/releases/v1/epics/E08-doctor-command/E08-Detail.md |
|
|
45
|
+
| D | .savepoint/releases/v1/epics/E09-docs-and-packaging/E09-Detail.md |
|
|
46
|
+
| D | .savepoint/releases/v1/epics/E10-release-validation/E10-Detail.md |
|
|
47
47
|
| M | .savepoint/router.md |
|
|
48
48
|
| M | .savepoint/visual-identity.md |
|
|
49
49
|
| M | AGENTS.md |
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Audit Proposals: v1.1 E02 Cross-Platform Compatibility
|
|
2
|
+
|
|
3
|
+
## Target File
|
|
4
|
+
|
|
5
|
+
`.savepoint/Design.md`
|
|
6
|
+
|
|
7
|
+
## Replace
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
## 12. Distribution & build
|
|
11
|
+
|
|
12
|
+
> Audit note: the live repository is transitioning from the documented TypeScript/Node implementation to a Go module (`github.com/opencode/savepoint`). The architecture document still contains substantial TypeScript-era implementation detail and should be reconciled as Go epics are audited.
|
|
13
|
+
|
|
14
|
+
- **License:** MIT.
|
|
15
|
+
- **Install:** primary `npx savepoint init`, persistent `npm i -g savepoint` → `savepoint`.
|
|
16
|
+
- **Runtime:** Node 20.10+ LTS, ESM-only, no native deps. macOS / Linux / Windows-Terminal.
|
|
17
|
+
- **Repo:** single package. TypeScript strict. `tsup` build → `dist/`. Bin `dist/cli.js` shebanged.
|
|
18
|
+
- **No telemetry.** Ever.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## With
|
|
22
|
+
|
|
23
|
+
```md
|
|
24
|
+
## 12. Distribution & build
|
|
25
|
+
|
|
26
|
+
> Audit note: the live repository is now a Go module (`github.com/opencode/savepoint`). Remaining TypeScript-era distribution details should be removed as Go epics are audited.
|
|
27
|
+
|
|
28
|
+
- **License:** MIT.
|
|
29
|
+
- **Runtime:** Go CLI binary. Source builds with `go build`; tests run with `go test ./...`.
|
|
30
|
+
- **Local build:** `make build` builds `savepoint` and injects `main.version` from `VERSION`.
|
|
31
|
+
- **Cross-platform builds:** `make build-all` cross-compiles linux-amd64, linux-arm64, darwin-amd64, and darwin-arm64 raw binaries into `dist/{platform}-{arch}/savepoint`.
|
|
32
|
+
- **Artifacts:** `make dist` creates versioned `.tar.gz` archives in `dist/` for the Linux and Darwin targets.
|
|
33
|
+
- **Smoke validation:** `make smoke-test` builds the local binary and runs `./savepoint --version` as a headless exit-0 check.
|
|
34
|
+
- **No telemetry.** Ever.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Target File
|
|
38
|
+
|
|
39
|
+
`AGENTS.md`
|
|
40
|
+
|
|
41
|
+
## Replace
|
|
42
|
+
|
|
43
|
+
```md
|
|
44
|
+
| `main.go` | CLI Entrypoint and root command wiring |
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## With
|
|
48
|
+
|
|
49
|
+
```md
|
|
50
|
+
| `main.go` | CLI entrypoint, root command wiring, and `--version` handling via build-time version injection |
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Target File
|
|
54
|
+
|
|
55
|
+
`.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Detail.md`
|
|
56
|
+
|
|
57
|
+
## Insert After
|
|
58
|
+
|
|
59
|
+
```md
|
|
60
|
+
## Architectural notes
|
|
61
|
+
|
|
62
|
+
- All Go code uses `path/filepath` — no syscalls are platform-specific
|
|
63
|
+
- Bubble Tea handles terminal differences across platforms
|
|
64
|
+
- No Go build tags or platform-specific files needed
|
|
65
|
+
- This is purely a build-tooling and release-workflow epic
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## With
|
|
69
|
+
|
|
70
|
+
```md
|
|
71
|
+
## Implemented as
|
|
72
|
+
|
|
73
|
+
- `Makefile` now has `build-linux`, `build-darwin`, `build-all`, `dist`, and `smoke-test` targets.
|
|
74
|
+
- `VERSION` defaults from `git describe --tags --abbrev=0` with a `v0.0.0` fallback and is injected into the binary with `-ldflags "-X main.version=$(VERSION)"`.
|
|
75
|
+
- `main.go` handles `--version` before launching the TUI, which gives smoke tests a non-interactive success path.
|
|
76
|
+
- `dist/` remains ignored by git and contains both raw cross-compiled binaries and versioned `.tar.gz` archives for Linux and Darwin builds.
|
|
77
|
+
- Windows zip packaging was not implemented in this epic; the final implementation covers the Linux and Darwin targets named in the epic's build-all definition of done.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Target File
|
|
81
|
+
|
|
82
|
+
`.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Detail.md`
|
|
83
|
+
|
|
84
|
+
## Replace
|
|
85
|
+
|
|
86
|
+
```md
|
|
87
|
+
- [x] Makefile replaced with Go-native commands (no `rm`, `cp`, `mkdir`)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## With
|
|
91
|
+
|
|
92
|
+
```md
|
|
93
|
+
- [ ] Makefile replaced with Go-native commands (no `rm`, `cp`, `mkdir`)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Quality Review
|
|
97
|
+
|
|
98
|
+
## Must Fix Before Close
|
|
99
|
+
|
|
100
|
+
- `Makefile`: `clean` still runs `rm -rf dist/`, which violates T001 acceptance criteria: "`make clean` removes the binary without using `rm -f` or other Unix-only commands" and "No shell commands in Makefile are platform-dependent."
|
|
101
|
+
- `Makefile`: `build-linux` and `build-darwin` still use `mkdir -p` and inline `GOOS=... GOARCH=...` environment assignment. That is fine for Linux, macOS, Git Bash, and WSL, but it is not a shell-agnostic Makefile implementation.
|
|
102
|
+
- `Makefile`: `dist` relies on `tar`, so packaging is not yet toolchain-native or Windows-shell portable.
|
|
103
|
+
- `.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/tasks/T004-smoke-tests-and-artifacts.md`: the task says `go test ./...` was not run even though the task completion protocol requires the full quality-gate suite before `status: done`.
|
|
104
|
+
|
|
105
|
+
## Carry Forward
|
|
106
|
+
|
|
107
|
+
- Windows `.zip` artifacts were deferred in T004. Keep that as a known scope gap unless the project narrows E02 explicitly to Linux and Darwin distribution.
|
|
108
|
+
- Consider moving cross-platform build and archive logic into a tiny Go helper if the project wants true shell portability while keeping `make` as the human entrypoint.
|
|
109
|
+
|
|
110
|
+
## Already Fixed
|
|
111
|
+
|
|
112
|
+
- `main.go` has a headless `--version` path, so smoke testing no longer needs to start the TUI.
|
|
113
|
+
- Linux and Darwin raw binary targets exist for amd64 and arm64.
|
|
114
|
+
- `AGENTS.md` already documents `build-all`, `dist`, and `smoke-test`.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Audit Snapshot: v1.1 E02 Cross-Platform Compatibility
|
|
2
|
+
|
|
3
|
+
Manual snapshot created because the audit CLI snapshot was missing while the router is already in `audit-pending`.
|
|
4
|
+
|
|
5
|
+
## Epic
|
|
6
|
+
|
|
7
|
+
- Release: `v1.1`
|
|
8
|
+
- Epic: `E02-cross-platform-compatibility`
|
|
9
|
+
- Source: `.savepoint/releases/v1.1/epics/E02-cross-platform-compatibility/E02-Detail.md`
|
|
10
|
+
- Router state: `audit-pending`
|
|
11
|
+
|
|
12
|
+
## Completed Tasks
|
|
13
|
+
|
|
14
|
+
- `E02-cross-platform-compatibility/T001-fix-makefile`
|
|
15
|
+
- `E02-cross-platform-compatibility/T002-linux-build-target`
|
|
16
|
+
- `E02-cross-platform-compatibility/T003-macos-build-target`
|
|
17
|
+
- `E02-cross-platform-compatibility/T004-smoke-tests-and-artifacts`
|
|
18
|
+
|
|
19
|
+
## Changed Files Listed By Task Logs
|
|
20
|
+
|
|
21
|
+
- `Makefile`
|
|
22
|
+
- `AGENTS.md`
|
|
23
|
+
- `.gitignore`
|
|
24
|
+
- `main.go`
|
|
25
|
+
- `internal/board/board.go`
|
|
26
|
+
|
|
27
|
+
## Drift Notes Found
|
|
28
|
+
|
|
29
|
+
- `main.go`: added `version` package-level var and `--version` arg check. Not yet in Codebase Map.
|
|
30
|
+
|
|
31
|
+
## Verification Reported By Tasks
|
|
32
|
+
|
|
33
|
+
- T001: `go build -o savepoint main.go` PASS, `go test ./...` PASS, `go clean` PASS
|
|
34
|
+
- T002: `go build` PASS, `go test ./...` PASS; Linux binaries reported as ELF for amd64 and arm64
|
|
35
|
+
- T003: `go build` PASS, `go test ./...` PASS; Darwin binaries reported as Mach-O for amd64 and arm64
|
|
36
|
+
- T004: `go build` PASS, `./savepoint --version` PASS; `go test ./...` not run
|
|
37
|
+
|
|
38
|
+
## Audit Notes
|
|
39
|
+
|
|
40
|
+
- The final `Makefile` includes cross-compile and packaging targets, but still contains Unix shell forms in `clean`, `build-linux`, `build-darwin`, `dist`, and `VERSION`.
|
|
41
|
+
- `T004` explicitly deferred Windows zip artifacts; the implemented release artifacts cover Linux and Darwin only.
|