todo: centralise custom components, with per-theme overrides
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,7 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
|||||||
|
|
||||||
## Themes
|
## Themes
|
||||||
|
|
||||||
**76 open, 18 closed**, across 27 themes.
|
**77 open, 18 closed**, across 28 themes.
|
||||||
|
|
||||||
| Theme | Open | Closed |
|
| Theme | Open | Closed |
|
||||||
| ------------------------------------------------------------------------------------------ | ---- | ------ |
|
| ------------------------------------------------------------------------------------------ | ---- | ------ |
|
||||||
@@ -26,6 +26,7 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
|||||||
| [Background jobs](todo/background-jobs/) | 1 | 0 |
|
| [Background jobs](todo/background-jobs/) | 1 | 0 |
|
||||||
| [Chat interface](todo/chat/) | 1 | 0 |
|
| [Chat interface](todo/chat/) | 1 | 0 |
|
||||||
| [Code editor](todo/code-editor/) | 1 | 0 |
|
| [Code editor](todo/code-editor/) | 1 | 0 |
|
||||||
|
| [Components — the shared UI layer](todo/components/) | 1 | 0 |
|
||||||
| [File watchers](todo/file-watchers/) | 1 | 0 |
|
| [File watchers](todo/file-watchers/) | 1 | 0 |
|
||||||
| [Files app — routing](todo/files-app/) | 3 | 0 |
|
| [Files app — routing](todo/files-app/) | 3 | 0 |
|
||||||
| [Fleet — one command across every server](todo/fleet/) | 2 | 0 |
|
| [Fleet — one command across every server](todo/fleet/) | 2 | 0 |
|
||||||
@@ -61,9 +62,9 @@ the owner's OS user and can never be granted. Indirection there really is accide
|
|||||||
- `2026-08-21` **Generalise it: deliver a turn to a named session, from anywhere in the backend** — [agent-delivery/generalise-it-deliver-a-turn-to-a-named](todo/agent-delivery/generalise-it-deliver-a-turn-to-a-named.md)
|
- `2026-08-21` **Generalise it: deliver a turn to a named session, from anywhere in the backend** — [agent-delivery/generalise-it-deliver-a-turn-to-a-named](todo/agent-delivery/generalise-it-deliver-a-turn-to-a-named.md)
|
||||||
- `2026-08-21` **The cost of resuming grows with the transcript** — [agent-delivery/the-cost-of-resuming-grows-with-the-transcript](todo/agent-delivery/the-cost-of-resuming-grows-with-the-transcript.md)
|
- `2026-08-21` **The cost of resuming grows with the transcript** — [agent-delivery/the-cost-of-resuming-grows-with-the-transcript](todo/agent-delivery/the-cost-of-resuming-grows-with-the-transcript.md)
|
||||||
- `2026-08-21` **Show how long a turn took, beside its cost and tokens** — [chat/show-how-long-a-turn-took-beside-its-cost](todo/chat/show-how-long-a-turn-took-beside-its-cost.md)
|
- `2026-08-21` **Show how long a turn took, beside its cost and tokens** — [chat/show-how-long-a-turn-took-beside-its-cost](todo/chat/show-how-long-a-turn-took-beside-its-cost.md)
|
||||||
|
- `2026-08-21` **Map every custom component, centralise it, and let a theme override it** — [components/map-every-custom-component-and-centralise-it](todo/components/map-every-custom-component-and-centralise-it.md)
|
||||||
- `2026-08-21` **Watch a directory, and attach actions to what lands in it** — [file-watchers/watch-a-directory-and-attach-actions-to-what](todo/file-watchers/watch-a-directory-and-attach-actions-to-what.md)
|
- `2026-08-21` **Watch a directory, and attach actions to what lands in it** — [file-watchers/watch-a-directory-and-attach-actions-to-what](todo/file-watchers/watch-a-directory-and-attach-actions-to-what.md)
|
||||||
- `2026-08-21` **A way to mark a commit "this one ships", so a release is not just `master`'s tip** — [fleet/a-way-to-mark-a-commit-this-one-ships-so-a](todo/fleet/a-way-to-mark-a-commit-this-one-ships-so-a.md)
|
- `2026-08-21` **A way to mark a commit "this one ships", so a release is not just `master`'s tip** — [fleet/a-way-to-mark-a-commit-this-one-ships-so-a](todo/fleet/a-way-to-mark-a-commit-this-one-ships-so-a.md)
|
||||||
- `2026-08-21` **iPhone Action Button → run an Officer task from a locked phone** — [mobile-apps/iphone-action-button-run-an-officer-task-from](todo/mobile-apps/iphone-action-button-run-an-officer-task-from.md)
|
- `2026-08-21` **iPhone Action Button → run an Officer task from a locked phone** — [mobile-apps/iphone-action-button-run-an-officer-task-from](todo/mobile-apps/iphone-action-button-run-an-officer-task-from.md)
|
||||||
- `2026-08-21` **The mobile recorder app, and the dispatcher agent behind it** — [mobile-apps/the-mobile-recorder-app-and-the-dispatcher](todo/mobile-apps/the-mobile-recorder-app-and-the-dispatcher.md)
|
- `2026-08-21` **The mobile recorder app, and the dispatcher agent behind it** — [mobile-apps/the-mobile-recorder-app-and-the-dispatcher](todo/mobile-apps/the-mobile-recorder-app-and-the-dispatcher.md)
|
||||||
- `2026-08-21` **A plugin's settings routes are reachable by anyone the plugin is granted to** — [multi-user/a-plugin-s-settings-routes-are-reachable-by](todo/multi-user/a-plugin-s-settings-routes-are-reachable-by.md)
|
- `2026-08-21` **A plugin's settings routes are reachable by anyone the plugin is granted to** — [multi-user/a-plugin-s-settings-routes-are-reachable-by](todo/multi-user/a-plugin-s-settings-routes-are-reachable-by.md)
|
||||||
- `2026-08-21` **A plugin cannot claim a WebSocket provider** — [plugin-infrastructure/a-plugin-cannot-claim-a-websocket-provider](todo/plugin-infrastructure/a-plugin-cannot-claim-a-websocket-provider.md)
|
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
theme: components
|
||||||
|
heading: "Components — the shared UI layer"
|
||||||
|
kind: theme
|
||||||
|
---
|
||||||
|
|
||||||
|
Where reusable UI lives, and what a theme is allowed to change about it.
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
id: components/map-every-custom-component-and-centralise-it
|
||||||
|
title: "Map every custom component, centralise it, and let a theme override it"
|
||||||
|
theme: components
|
||||||
|
status: open
|
||||||
|
created: 2026-08-21
|
||||||
|
date_source: stated
|
||||||
|
order: 1
|
||||||
|
---
|
||||||
|
|
||||||
|
**Map every custom component, centralise it, and let a theme override it.** Wanted 2026-08-21. Two
|
||||||
|
halves, in order: first the survey — every custom component used around the app that ought to live in
|
||||||
|
the `officerdev` workspace instead of where it sits now — then a mechanism for a **theme** to override
|
||||||
|
a centralised component rather than being limited to recolouring it.
|
||||||
|
|
||||||
|
**The owner knows the design he wants and recorded this only so it is not forgotten.** Do not invent an
|
||||||
|
approach here; ask him for it when the item comes up.
|
||||||
|
|
||||||
|
Scale of the survey, counted 2026-08-21: `src/workspaces/components/` holds 26 entries including 51 `ui`
|
||||||
|
primitives, while `src/apps/officer-web` has 105 `.tsx` files and `src/workspaces/officerdev/src` has
|
||||||
|
118. Most of those are screens and panels rather than reusable pieces, so the map is the work — the
|
||||||
|
number is only the haystack.
|
||||||
|
|
||||||
|
One fact the override half runs into: **a theme is CSS today, and nothing else.** The 25 files under
|
||||||
|
`src/workspaces/theme/css/themes/` are generated variable blocks (`[data-theme='…'] { --background: … }`)
|
||||||
|
built from Omarchy palettes by `scripts/generate-themes.ts`, and they carry no component information at
|
||||||
|
all. Their header says not to edit them by hand, because the previous port drifted exactly that way —
|
||||||
|
so a per-theme component override needs somewhere new to live, and it cannot be a hand-edit in a
|
||||||
|
generated file.
|
||||||
Reference in New Issue
Block a user