Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
- Modify only `/Users/lanh/Developer/pi-vault/pi-status`; Pi and Atelier repositories are read-only references.
- Add no dependency, runtime palette fetch, graphical picker, CSS parser, import/export, or Pi global-theme mutation.
- Use `Pi` (`pi`) as the default preset. `NO_COLOR` is an environment override, never a preset.
- Persist only uppercase `#RRGGBB` Custom values and retain exactly 14 editable semantic roles.
- Accept case-insensitive hex input, persist only lowercase `#rrggbb` values, and retain exactly 14 editable semantic roles.
- Fixed and Custom presets emit truecolour; do not add a 256-colour conversion path.
- Dashboard uses draft colours; installed surfaces change only after persistence succeeds.
- Preserve malformed-file overwrite refusal and renderer plain-text fallbacks.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
- Modify only `/Users/lanh/Developer/pi-vault/pi-status`; Pi and Atelier repositories are read-only references.
- Add no dependency, runtime palette fetch, graphical picker, CSS parser, import/export, or Pi global-theme mutation.
- Use `Pi` (`pi`) as the default preset. `NO_COLOR` is an environment override, never a preset.
- Persist only uppercase `#RRGGBB` Custom values and retain exactly 14 editable semantic roles.
- Accept case-insensitive hex input, persist only lowercase `#rrggbb` values, and retain exactly 14 editable semantic roles.
- Fixed and Custom presets emit truecolour; do not add a 256-colour conversion path.
- Dashboard uses draft colours; installed surfaces change only after persistence succeeds.
- Preserve malformed-file overwrite refusal and renderer plain-text fallbacks.
Expand Down Expand Up @@ -233,12 +233,12 @@ In `tests/tui/dashboard.test.ts`, activate Accent and verify:

```ts
expect(renderText()).toContain("Edit accent colour");
component.handleInput("#010203");
component.handleInput("#AbCdEf");
component.handleInput("\r");
expect(component.getState().draft.colors.custom.accent).toBe("#010203");
expect(component.getState().draft.colors.custom.accent).toBe("#abcdef");
```

Add invalid-submit and Escape tests. Invalid submit must leave the dialog open and draft unchanged, and notify `Colour must use #RRGGBB` with `warning` once per submit.
Add invalid-submit and Escape tests. Invalid submit must leave the dialog open and draft unchanged, and notify `Colour must use # followed by 6 hex digits` with `warning` once per submit.

- [ ] **Step 5: Run Dashboard render/component tests and verify RED**

Expand All @@ -250,7 +250,7 @@ Expected: FAIL because preset rendering and the colour dialog do not exist.

- [ ] **Step 6: Implement labels, draft preview, and Input dialog**

In `src/tui/dashboard-render.ts`, add the exact labels above and render Colours as an adjustable `↔` row. Render each Custom row with its role, uppercase value, and a sample through `theme.fg(role, "●")`.
In `src/tui/dashboard-render.ts`, add the exact labels above and render Colours as an adjustable `↔` row. Render each Custom row with its role, lowercase value, and a sample through `theme.fg(role, "●")`.

Extend `DashboardDialog`:

Expand All @@ -273,7 +273,7 @@ Handle `edit_color` by seeding `Input` with the current value. On submit:

```ts
if (!isHexColor(value)) {
this.warn("Colour must use #RRGGBB");
this.warn("Colour must use # followed by 6 hex digits");
return;
}
this.dispatch({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
- Modify only `/Users/lanh/Developer/pi-vault/pi-status`; Pi and Atelier repositories are read-only references.
- Add no dependency, runtime palette fetch, graphical picker, CSS parser, import/export, or Pi global-theme mutation.
- Use `Pi` (`pi`) as the default preset. `NO_COLOR` is an environment override, never a preset.
- Persist only uppercase `#RRGGBB` Custom values and retain exactly 14 editable semantic roles.
- Accept case-insensitive hex input, persist only lowercase `#rrggbb` values, and retain exactly 14 editable semantic roles.
- Fixed and Custom presets emit truecolour; do not add a 256-colour conversion path.
- Dashboard uses draft colours; installed surfaces change only after persistence succeeds.
- Preserve malformed-file overwrite refusal and renderer plain-text fallbacks.
Expand Down Expand Up @@ -114,7 +114,7 @@ In `README.md`:
- List all nine labels in Dashboard order.
- Group Catppuccin Mocha/Latte, Dracula/Alucard, and Tokyo Night Moon/Day as explicit dark/light choices.
- Link the three official palette sources used by the local constants.
- Document first-use Custom seeding, 14 `#RRGGBB` roles, uppercase persistence, and truecolour requirements.
- Document first-use Custom seeding, 14 `#rrggbb` roles, case-insensitive input, lowercase persistence, and truecolour requirements.
- State that `NO_COLOR` disables styling across Dashboard, Statusbar, and Sidebar without changing the saved selection.

In `CHANGELOG.md`, add above released entries:
Expand Down Expand Up @@ -162,7 +162,7 @@ Launch the local extension in Pi and open `/statusline` at approximately `120x30
3. All nine labels cycle in the documented order with wraparound.
4. Each fixed dark/light preset previews and saves consistently across all surfaces.
5. First Custom entry clones the selected fixed palette, or Atelier from Pi; later switches preserve it.
6. Custom exposes 14 scrollable roles; lowercase input saves uppercase, invalid input remains open with one warning per submit, and Escape cancels.
6. Custom exposes 14 scrollable roles; uppercase, lowercase, and mixed-case input saves lowercase, invalid input remains open with one warning per submit, and Escape cancels.
7. Draft changes recolour Dashboard immediately while installed surfaces wait for confirmed Save.
8. Failed Save leaves installed colours unchanged and Dashboard dirty.
9. `NO_COLOR` removes ANSI styling without changing the saved preset.
Expand Down
Loading