@groeponline/pi-wishcraft 1.0.5 → 1.2.0
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/CHANGELOG.md +20 -0
- package/README.md +25 -9
- package/ROADMAP.md +41 -260
- package/docs/commands.md +6 -2
- package/docs/configuration.md +21 -0
- package/docs/design/accessibility.md +71 -0
- package/docs/design/deck-layout.md +69 -0
- package/docs/design/motion-gallery.md +80 -0
- package/docs/design/motion-system.md +119 -0
- package/docs/design/presets.md +196 -0
- package/docs/design/regression-testing.md +54 -0
- package/docs/design/responsive.md +53 -0
- package/docs/design/signal.md +68 -0
- package/docs/design/theme-contract.md +132 -0
- package/docs/design/vnext-overview.md +55 -0
- package/docs/design/vnext-release-plan.md +212 -0
- package/docs/index.md +19 -1
- package/docs/segments.md +1 -1
- package/package.json +16 -9
- package/src/config/appearance.ts +230 -0
- package/src/config/parse.ts +41 -0
- package/src/config/presets.ts +184 -0
- package/src/config/structural-presets.ts +555 -0
- package/src/config/tokens.ts +154 -0
- package/src/config/types.ts +210 -2
- package/src/extension/commands/commands.ts +36 -12
- package/src/extension/commands/powerline-completions.ts +4 -0
- package/src/extension/commands/queue-commands.ts +6 -0
- package/src/extension/core/segment-context.ts +7 -1
- package/src/extension/core/state.ts +14 -0
- package/src/extension/core/types.ts +7 -0
- package/src/extension/session/session-lifecycle.ts +20 -0
- package/src/extension/settings/appearance-write.ts +135 -0
- package/src/extension/settings/wishcraft-config-items.ts +119 -0
- package/src/extension/settings/wishcraft-config.ts +28 -114
- package/src/extension/skills/skill-manager.ts +57 -3
- package/src/extension/ui/custom-editor.ts +7 -4
- package/src/extension/ui/deck/component.ts +358 -0
- package/src/extension/ui/deck/index.ts +34 -0
- package/src/extension/ui/deck/render.ts +260 -0
- package/src/extension/ui/deck/route-bodies.ts +209 -0
- package/src/extension/ui/deck/routes.ts +37 -0
- package/src/extension/ui/deck/session-snapshot.ts +104 -0
- package/src/extension/ui/deck/types.ts +92 -0
- package/src/extension/ui/layout.ts +3 -2
- package/src/extension/ui/menu-views.ts +6 -1
- package/src/extension/ui/powerline-menu-view.ts +19 -15
- package/src/extension/ui/signal-layout.ts +77 -0
- package/src/extension/ui/status-line-renderers.ts +24 -5
- package/src/motion/accessibility.ts +59 -0
- package/src/motion/catalog-extra.ts +429 -0
- package/src/motion/catalog.ts +336 -0
- package/src/motion/composer.ts +147 -0
- package/src/motion/frames.ts +84 -0
- package/src/motion/gallery.ts +77 -0
- package/src/motion/index.ts +78 -0
- package/src/motion/policy.ts +128 -0
- package/src/motion/scheduler.ts +159 -0
- package/src/motion/types.ts +132 -0
- package/src/render/timer.ts +1 -0
- package/src/segments/registry.ts +18 -6
- package/src/segments/system.ts +1 -1
- package/src/signal/controller.ts +123 -0
- package/src/signal/integration.ts +42 -0
- package/src/signal/render.ts +178 -0
- package/src/theme/colors.ts +14 -0
- package/src/theme/detect.ts +48 -0
- package/src/theme/tokens/index.ts +9 -0
- package/src/theme/tokens/mapping.ts +62 -0
- package/src/theme/tokens/types.ts +39 -0
- package/src/welcome/renderer.ts +2 -2
- package/src/welcome/whats-new.ts +46 -10
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [1.2.0] - 2026-08-24
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- Deck polish: structural display names (Lanternwake, Hexforge, …), injectable gallery tick, route-specific footers, and Signal three-lane copy. Clock frames stay ASCII-safe. Flat `/wishcraft settings` reloads Signal through `reloadPowerlineFromSettings`.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Wishcraft Deck (`alt+p` / `/wishcraft`) is the operator overlay: eleven routes, `g`-prefix jumps, and a live session snapshot. `/wishcraft settings` (or `config`) opens the flat settings list.
|
|
12
|
+
- `/signal` is the primary status command (`/powerline` remains an alias). No-args still toggles. `/signal menu` opens Navigate / Configure / Status.
|
|
13
|
+
- Ten structural appearance bases (`lanternwake`…`crucible`) apply live Signal colors via `powerline.appearance.base`. Deck Appearance + Enter writes the base. `/signal hexforge` syncs appearance when the layout name is structural.
|
|
14
|
+
- Motion Gallery and Composer on the Deck Motion route. Catalog is 50+ definitions. Enter assigns a motion to a semantic event (`powerline.appearance.motion`).
|
|
15
|
+
- Skill Workbench, idea list, and guardrail rules render inside the Deck Craft routes.
|
|
16
|
+
- First-class motion levels (`full|reduced|functional|off`) via `powerline.motionLevel`, `NO_COLOR`, and screen-reader / reduced-motion host flags.
|
|
17
|
+
|
|
18
|
+
## [1.1.0] - 2026-08-23
|
|
19
|
+
|
|
20
|
+
### Security
|
|
21
|
+
- Skills manager refuses to delete skill files or directories that resolve (through symlinks) outside the canonical skill roots.
|
|
22
|
+
- Skills editor command validates `EDITOR` before use, falling back to `nvim` for unsafe values.
|
|
23
|
+
- Open-ports overlay reuses the shared `sshCommand` helper and fails explicitly on an invalid host instead of falling back to a local probe.
|
|
24
|
+
|
|
5
25
|
## [1.0.5] - 2026-08-23
|
|
6
26
|
|
|
7
27
|
## [1.0.4] - 2026-08-23
|
package/README.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
<p>
|
|
2
|
-
<img src="banner.png" alt="pi-wishcraft" width="1100">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/GroepOnline/pi-wishcraft/main/banner.png" alt="pi-wishcraft" width="1100">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p>
|
|
6
|
+
<a href="https://www.npmjs.com/package/@groeponline/pi-wishcraft"><img src="https://img.shields.io/npm/v/@groeponline/pi-wishcraft.svg" alt="npm version"></a>
|
|
7
|
+
<a href="https://www.npmjs.com/package/@groeponline/pi-wishcraft"><img src="https://img.shields.io/npm/dm/@groeponline/pi-wishcraft.svg?label=downloads" alt="npm downloads"></a>
|
|
8
|
+
<a href="https://pi.dev/packages/@groeponline/pi-wishcraft"><img src="https://img.shields.io/badge/Pi-package-9b59b6.svg" alt="Pi package"></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-555.svg" alt="MIT license"></a>
|
|
3
10
|
</p>
|
|
4
11
|
|
|
5
12
|
# pi-wishcraft
|
|
@@ -26,14 +33,14 @@ Ephemeral VMs / CI:
|
|
|
26
33
|
curl -fsSL https://raw.githubusercontent.com/GroepOnline/pi-wishcraft/main/scripts/install.sh | bash
|
|
27
34
|
```
|
|
28
35
|
|
|
29
|
-
Then restart pi or `/reload`.
|
|
36
|
+
Then restart pi or `/reload`. Pi host packages are declared as `peerDependencies: "*"`, matching the Pi package contract.
|
|
30
37
|
|
|
31
38
|
## What you get
|
|
32
39
|
|
|
33
40
|
| Surface | What it does |
|
|
34
41
|
| --- | --- |
|
|
35
|
-
|
|
|
36
|
-
| `alt+p` |
|
|
42
|
+
| Signal | Motion-aware three-lane operator status: model/Git, live activity/tool state, and context/queue. Default placement is the editor top border; `/signal placement below` moves it. |
|
|
43
|
+
| `alt+p` | Wishcraft Deck: session, Signal, skills, ideas, guardrails, appearance. `g` + jump. `/wishcraft settings` is the flat list. `/signal menu` is Navigate / Configure / Status. |
|
|
37
44
|
| `# <idea>` | File-backed inbox. Does not send the prompt. `/ideas` reviews status, tags, and skill insert. `/ideas next` feeds the oldest active idea into the session. |
|
|
38
45
|
| `alt+s` | Stash the draft, ask something else, get it back when the run finishes. |
|
|
39
46
|
| `/skills` | Overlay search on name, description, and path. Enter inserts. `/skills doctor` is the health table. `/skills new` writes a SKILL.md from a template. |
|
|
@@ -46,11 +53,11 @@ Pi owns the footer chrome, feed scrolling, and input. Wishcraft supplies widgets
|
|
|
46
53
|
|
|
47
54
|
## Daily commands
|
|
48
55
|
|
|
49
|
-
Activates on load. `/
|
|
56
|
+
Activates on load. `/signal` toggles it. `/signal <preset>` switches the information layout. `/signal menu` opens Navigate / Configure / Status. `/wishcraft` opens the Deck. Tab completes presets and `placement above|below|toggle`. `/powerline` remains a compatibility alias.
|
|
50
57
|
|
|
51
58
|
```text
|
|
52
|
-
/
|
|
53
|
-
/
|
|
59
|
+
/signal doctor settings, queue, git, bash, fonts
|
|
60
|
+
/signal export current preset + layout as JSON
|
|
54
61
|
/tps live in/out overlay (same ring as the segment)
|
|
55
62
|
/tps 40 override POWERLINE_TPS
|
|
56
63
|
/usage session / today / week from ~/.pi/agent/wishcraft-usage.json
|
|
@@ -59,7 +66,8 @@ Activates on load. `/powerline` toggles it. `/powerline <preset>` switches look.
|
|
|
59
66
|
/skills doctor health table (broken frontmatter, dupes, unused, budget)
|
|
60
67
|
/skills new [name] write a SKILL.md from a template
|
|
61
68
|
/ideas idea review overlay (status, tags, skill insert)
|
|
62
|
-
/wishcraft
|
|
69
|
+
/wishcraft Deck overlay (operator surface)
|
|
70
|
+
/wishcraft settings flat settings TUI
|
|
63
71
|
/open-ports listening sockets
|
|
64
72
|
/cd <path> continue this conversation in another directory
|
|
65
73
|
/bash-mode sticky shell (also ctrl+shift+b)
|
|
@@ -92,7 +100,8 @@ Keybinds (`powerlineShortcuts`, applied after `/reload`; `null` disables):
|
|
|
92
100
|
"powerline": {
|
|
93
101
|
"preset": "chef",
|
|
94
102
|
"placement": "above",
|
|
95
|
-
"welcome": true
|
|
103
|
+
"welcome": true,
|
|
104
|
+
"appearance": { "base": "lanternwake" }
|
|
96
105
|
}
|
|
97
106
|
}
|
|
98
107
|
```
|
|
@@ -214,6 +223,13 @@ Declarative deny/inject rules in the **global** agent settings file. No shell co
|
|
|
214
223
|
- The legacy `@groeponline/pi-powerline-footer` package is deprecated on npm in favor of `@groeponline/pi-wishcraft`; the GitHub fork relationship is retained for upstream history and attribution.
|
|
215
224
|
- Tags are not rewritten. 0.19.x through current stay on the timeline.
|
|
216
225
|
|
|
226
|
+
## vNext Direction
|
|
227
|
+
|
|
228
|
+
Wishcraft is evolving into Pi's animated operator layer — intent, skills, ideas, guardrails, and session state made visible and controllable without turning Pi into an IDE.
|
|
229
|
+
|
|
230
|
+
- **[vNext Stacked PR Release Plan](docs/design/vnext-release-plan.md)**: Specifications for PR0 through PR8.
|
|
231
|
+
- **[Design Corpus](docs/index.md#design-system--vnext-specifications)**: Deck, Signal, Motion Gallery, tokens, and the 10 structural presets. `npm run preview` renders the Deck frames.
|
|
232
|
+
|
|
217
233
|
## Docs
|
|
218
234
|
|
|
219
235
|
- [Commands](docs/commands.md)
|
package/ROADMAP.md
CHANGED
|
@@ -97,6 +97,29 @@ Niet de fork. Niet de SaaS-agent.
|
|
|
97
97
|
preset-editor, idee-review, stabiele ChefGroep-statuskeys,
|
|
98
98
|
documentatie die waar is. Done = README dekt alles wat we shipten,
|
|
99
99
|
geen kapotte footer-belofte.
|
|
100
|
+
- **vNext — "Operator Layer"** (in uitvoering). Stacked PRs PR0–PR8:
|
|
101
|
+
Deck control surface (`ctx.ui.custom`), animated Signal powerline,
|
|
102
|
+
zero-overhead Motion Engine (0 FPS idle), 10 signature structural presets,
|
|
103
|
+
semantische tokens, en first-class accessibility (`NO_COLOR`, reduced motion).
|
|
104
|
+
Zie [docs/design/vnext-release-plan.md](docs/design/vnext-release-plan.md).
|
|
105
|
+
- PR0 design corpus — geland (`docs/design/`).
|
|
106
|
+
- PR1 motion engine — geland (`src/motion/`): één scheduler op de bestaande
|
|
107
|
+
coalescing timer, semantische events, 6 channels, 0 FPS zonder consumers.
|
|
108
|
+
- PR2 semantic tokens — geland (`src/config/tokens.ts`): `PresetDef.tokens`
|
|
109
|
+
is optioneel en `DEFAULT_TOKENS` reproduceert `getDefaultColors()`.
|
|
110
|
+
- PR3 structural presets — geland (`src/config/structural-presets.ts`,
|
|
111
|
+
`src/config/appearance.ts`): 10 signature presets, mixable layers, Nerd/ASCII
|
|
112
|
+
glyph fallbacks; legacy layout presets ongewijzigd.
|
|
113
|
+
- PR4 animated Signal — geland (`src/signal/`): drie lanes, lifecycle-driven
|
|
114
|
+
motion op één gedeelde scheduler, `/signal` primair en 0 FPS in rust.
|
|
115
|
+
- PR5 Deck — geland (`src/extension/ui/deck/`): unified overlay via
|
|
116
|
+
`ctx.ui.custom`, Alt+P en `/wishcraft`, elf routes, jump/search navigatie.
|
|
117
|
+
- PR6 Appearance / Gallery — geland: Deck Motion gallery + composer,
|
|
118
|
+
50+ catalog defs, Enter assigns `powerline.appearance.motion`.
|
|
119
|
+
- PR7 accessibility — geland: `src/theme/detect.ts`,
|
|
120
|
+
`src/motion/accessibility.ts`, `powerline.motionLevel`.
|
|
121
|
+
- PR8 Craft + docs — geland: Deck Skill Workbench, idea/guardrail panes,
|
|
122
|
+
`skills/wishcraft-tui/references/*`, project subagents.
|
|
100
123
|
|
|
101
124
|
## Top-15 track: remaining maturity gaps
|
|
102
125
|
|
|
@@ -136,227 +159,37 @@ P1 — differentiation and quality:
|
|
|
136
159
|
useful features. *Fix: sensible defaults + first-run setup overlay.*
|
|
137
160
|
3. **Perf budget / low-power mode.** Status renders every ~33ms; heavy
|
|
138
161
|
segments (bash-history, git) can hit the hot path. *Fix: configurable
|
|
139
|
-
refresh + lite mode
|
|
162
|
+
refresh + lite mode / repeating scheduler with 0 FPS idle. Scheduler landed
|
|
163
|
+
in PR1 (`src/motion/scheduler.ts`); the segment hot path is still open.*
|
|
140
164
|
4. **Accessibility (no-color / reduced-motion).** Truecolor + animations
|
|
141
165
|
(vibes, rainbow think) break on terminals without truecolor. *Fix:
|
|
142
|
-
`NO_COLOR`/8-color + reduced-motion respect.*
|
|
166
|
+
`NO_COLOR`/8-color + reduced-motion respect (PR7).*
|
|
143
167
|
|
|
144
168
|
P2 — full product, post-1.0:
|
|
145
|
-
5. **Preset editor in-menu** — custom JSON-only today.
|
|
169
|
+
5. **Preset editor in-menu** — custom JSON-only today (addressed in PR3 & PR6).
|
|
146
170
|
6. **Skill install from repo/npm** — discovery + doctor exist; install and
|
|
147
|
-
curate missing.
|
|
171
|
+
curate missing (addressed in PR8).
|
|
148
172
|
7. **Host-status integration** — `ctx.ui.setStatus` beside the footer so
|
|
149
173
|
status also shows in host UI (`skills.count` is a start; full coverage
|
|
150
174
|
remains).
|
|
151
175
|
|
|
152
|
-
Linear tickets for open gaps are still to be filed (not invented in this
|
|
153
|
-
ROADMAP).
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## 0.19.0 — Correctheid
|
|
158
|
-
|
|
159
|
-
Eén campagne, drie stacked PRs. Volgorde vast. Elke PR: `npm run
|
|
160
|
-
typecheck && npm test && npx madge --circular src index.ts bash-mode
|
|
161
|
-
queue` groen vóór review. Overlay-submenus (CHE-42) zitten in 0.20.
|
|
162
|
-
|
|
163
|
-
### PR A — runtime-bugs — ✅ geland in `feat/wishcraft-0.19` (samen met skills v2, hooks, lantern-welcome, `/wishcraft` config-TUI; supersedeert #10)
|
|
164
|
-
|
|
165
|
-
Alle zes punten uit het oorspronkelijke plan zitten in de ene 0.19-branch:
|
|
166
|
-
debris weg, filter werkend (v2: substring i.p.v. prefix), cache-invalide op
|
|
167
|
-
`session_start` + TTL, woordgrens op inline-triggers, unclosed-fence EOF,
|
|
168
|
-
bash-session tempdir + sentinel-colon, `permissions: contents: read`.
|
|
169
|
-
`npm pack --dry-run` bevat geen debris (113 files, geen `ook.md`/`test.md`).
|
|
170
|
-
|
|
171
|
-
### PR B — config-afmakers — ✅ geland in `feat/wishcraft-0.19` / #12
|
|
172
|
-
|
|
173
|
-
Bestanden: `src/config/`, `src/segments/`, `src/extension/ui/`.
|
|
174
|
-
|
|
175
|
-
1. `segmentLabels` toepassen in `renderSegment` voor **alle** segments
|
|
176
|
-
(nu alleen tps/open_ports/subagents).
|
|
177
|
-
2. `segmentOptions.<seg>.template` wint van label
|
|
178
|
-
(`"{value} tok/s"`).
|
|
179
|
-
3. `segmentOptions.tps.windowMs` (default 1000), `.mode`
|
|
180
|
-
(`both | out | in | total`), `.hideIdle` (default true).
|
|
181
|
-
4. Visibility-toggle in het `alt+p`-menu schrijft live
|
|
182
|
-
`powerline.disabledSegments`.
|
|
183
|
-
|
|
184
|
-
Done: unit tests op label/template/windowMs-resolutie; handmatige
|
|
185
|
-
check: label op `git` + `cost` zichtbaar, TPS hidden bij 0 wanneer
|
|
186
|
-
`hideIdle`.
|
|
187
|
-
|
|
188
|
-
### PR C — release 0.19.0
|
|
189
|
-
|
|
190
|
-
1. Merge naar `main` triggert `release.yml`: `node scripts/release.mjs auto --push`.
|
|
191
|
-
Commits sinds `v0.18.0` bevatten `feat:` → **0.19.0**. Handmatig blijft
|
|
192
|
-
`npm run release minor` + tag-push mogelijk.
|
|
193
|
-
2. Tag-job publiceert met org-secret `NPM_TOKEN` (geen repo-override).
|
|
194
|
-
3. Verify: tag op origin, publish-job groen, `npm view @groeponline/pi-wishcraft version` = 0.19.0.
|
|
195
|
-
Catalogus (hard): `npm run verify:package` groen in de release-job;
|
|
196
|
-
`npm view @groeponline/pi-wishcraft keywords` bevat `pi-package`,
|
|
197
|
-
`pi-extension`, `wishcraft`; `pi.image` is de banner-URL.
|
|
198
|
-
Daarna:
|
|
199
|
-
- https://pi.dev/packages/@groeponline/pi-wishcraft toont 0.19.0
|
|
200
|
-
- https://pi.dev/packages?name=wishcraft toont de card
|
|
201
|
-
- https://pi.dev/packages?name=groeponline toont wishcraft naast
|
|
202
|
-
fff en orchestrator
|
|
203
|
-
Detailpagina bestaat al voor 0.18.0; de zoekindex niet. Nieuwe
|
|
204
|
-
publish + discovery-keywords is de refresh. Catalogus-lag tot
|
|
205
|
-
een paar uur is oké; ontbreken na 24u = 0.19.1 met dezelfde
|
|
206
|
-
metadata, geen stille "later wel".
|
|
207
|
-
4. README: skills-sectie zegt dat filter werkt; geen `ook`/`test`
|
|
208
|
-
debris. ROADMAP sync (deze file).
|
|
209
|
-
5. `npm deprecate @groeponline/pi-powerline-footer` blijft een
|
|
210
|
-
scope-owner actie buiten deze PR (`deprecate-old-name.yml`,
|
|
211
|
-
workflow_dispatch). Blokkeert 0.19 niet.
|
|
212
|
-
|
|
213
|
-
Hygiëne die al klaar is en niet opnieuw gepland wordt:
|
|
214
|
-
|
|
215
|
-
- Fork-tags weg (51 upstream-tags, 2026-08-18). Eigen reeks vanaf
|
|
216
|
-
`v0.10.0`.
|
|
217
|
-
- `banner.png` blijft (README). `wishcraft-concept.png` gaat weg in
|
|
218
|
-
PR A of een docs-PR, niet in de balk-runtime.
|
|
219
|
-
- CHANGELOG inkorten (GRO-1060) doen we **niet** in 0.19. Erfgoed
|
|
220
|
-
is history, geen cruft.
|
|
221
|
-
- Versie blijft 0.19, geen reset naar 1.0.0.
|
|
222
|
-
|
|
223
|
-
GRO-1061 (runner-queue) is ops, geen product-slice.
|
|
224
|
-
|
|
225
176
|
---
|
|
226
177
|
|
|
227
|
-
##
|
|
228
|
-
|
|
229
|
-
Vier stacked PRs. 0.20.0 (#19) en 0.21.0 (#13) staan op npm. CHE-42
|
|
230
|
-
Configure-overlay, doctor/export, queue-archive en `docs/` zijn geland.
|
|
231
|
-
GRO-1414 sluit README-hooks, rest-repairs, `/tps`+`/usage`, substring-filter.
|
|
232
|
-
|
|
233
|
-
Overlay-chrome kit, één keer, daarna hergebruiken: box + ronde hoeken,
|
|
234
|
-
accent-kop, dim metadata, rechts uitgelijnde counts, `→` detail /
|
|
235
|
-
`←` terug / `esc` weg, consistente footer-hints. Eerste consument =
|
|
236
|
-
skills v2; tweede = `/usage`; derde = queue/idea. Pure render-
|
|
237
|
-
functies, geen `ctx.ui`-mock.
|
|
238
|
-
|
|
239
|
-
### PR E — hooks — ✅ geland in `feat/wishcraft-0.19`; README-voorbeelden in GRO-1414
|
|
240
|
-
|
|
241
|
-
Settings: `wishcraft.hooks` met events
|
|
242
|
-
`preToolUse | postToolUse | sessionStart | turnEnd`. Per hook
|
|
243
|
-
`matcher` (toolName-regex) en `command` (JSON stdin/stdout, timeout
|
|
244
|
-
30s, max 600s). PreToolUse: `allow | deny` + reason die het model
|
|
245
|
-
ziet. Exit 2 = deny, stderr-eerste-regel = reason. PostToolUse /
|
|
246
|
-
SessionStart: `additionalContext`. Kill-switch
|
|
247
|
-
`wishcraft.hooksEnabled: false`. PreToolUse sequentieel (eerste deny
|
|
248
|
-
stopt); PostToolUse/turnEnd parallel.
|
|
249
|
-
|
|
250
|
-
Done: `parseHookOutput` unit-testen. README met drie werkende
|
|
251
|
-
voorbeelden: bash-guard (`rm -rf /` blokkeren), write-audit
|
|
252
|
-
(append-only log), SessionStart git-status injectie.
|
|
253
|
-
|
|
254
|
-
### PR F — tool-input repairs — ✅ schema-loze subset in 0.19; rest (JSON-array, `{}`, bare-wrap, path aliases) in GRO-1414. Core tools blijven met rust.
|
|
255
|
-
|
|
256
|
-
`tool_call`-handler repareert bekende malformaties vóór executie
|
|
257
|
-
(mutable input). Volgorde vast: json-parse vóór bare-wrap.
|
|
258
|
-
|
|
259
|
-
1. `null` voor optioneel weglaten.
|
|
260
|
-
2. JSON-string-array → array.
|
|
261
|
-
3. `{}`-placeholder → array.
|
|
262
|
-
4. bare-string → array-wrap.
|
|
263
|
-
5. markdown-auto-link pads (`[x.md](http://x.md)` → `x.md`).
|
|
264
|
-
6. pad-alias `filePath` / `absolutePath` / `target_file` → `path`.
|
|
265
|
-
|
|
266
|
-
Repair-teller per `(tool, repair)` als extension status.
|
|
267
|
-
`wishcraft.repairsEnabled` default true. Scope: custom tools +
|
|
268
|
-
extensie-tools. Pi core-tools laten we met rust — core valideert
|
|
269
|
-
zijn eigen schema's.
|
|
270
|
-
|
|
271
|
-
Done: pure `repairToolInput(tool, input)` + table-driven tests voor
|
|
272
|
-
de zes gevallen + de parse-vóór-wrap invariant.
|
|
273
|
-
|
|
274
|
-
### PR G — overlay-submenus (CHE-42) — ✅ #19 + expansion (#13 reopen)
|
|
275
|
-
|
|
276
|
-
The `alt+p` menu gets stacked `SelectList` overlays (arrows +
|
|
277
|
-
descriptions) instead of flat `ctx.ui.select`. Maximum three top-level
|
|
278
|
-
entries. #19 lands the top-level tree (Navigate / Configure /
|
|
279
|
-
Status). Configure now uses `showSelectOverlay` (CHE-42 remainder). CHE-40
|
|
280
|
-
is Done (#18). CHE-41 is Done: `→` in Navigate, snapshot on open, no second `alt+i` path.
|
|
281
|
-
|
|
282
|
-
### PR H — skills manager v2 UI + token-overlays
|
|
283
|
-
|
|
284
|
-
Replaces `skill-manager.ts` (242 lines). The data layer builds on Pi
|
|
285
|
-
core `loadSkills` / `loadSkillsFromDir` / `Skill` /
|
|
286
|
-
`SkillFrontmatter` (publicly exported in
|
|
287
|
-
`@earendil-works/pi-coding-agent`).
|
|
288
|
-
|
|
289
|
-
UI, non-negotiable:
|
|
290
|
-
|
|
291
|
-
- Working search: substring on name + description + path,
|
|
292
|
-
case-insensitive; `ctrl+u` clears; empty match = row
|
|
293
|
-
`no skills for '<q>'`.
|
|
294
|
-
- Categories with headings (bundled / global / project / prompts);
|
|
295
|
-
`tab` switches the filter; `s` sorts name ↔ usage.
|
|
296
|
-
- `→` detail (frontmatter table, usage, path, body + scroll);
|
|
297
|
-
`enter` inserts; `e` opens `$EDITOR` (default nvim) via external
|
|
298
|
-
spawn like pi's `!`; `n` creates a new skill in
|
|
299
|
-
`~/.pi/agent/skills/<name>/SKILL.md`; `d` delete + confirm.
|
|
300
|
-
- Usage-ledger `~/.pi/agent/skill-usage.json` (name, timestamp,
|
|
301
|
-
trigger type). Best-effort, never blocking on the input hot path.
|
|
302
|
-
- Skill health: core-diagnostics as a warning icon; `?` explains it.
|
|
303
|
-
|
|
304
|
-
Same chrome as the segment navigator. English, direct.
|
|
305
|
-
|
|
306
|
-
At the same time, small additions:
|
|
307
|
-
|
|
308
|
-
- `/tps` overlay: in/out, peak + average over the existing ring.
|
|
309
|
-
No new sampler.
|
|
310
|
-
- `/usage` overlay: today / this week / this session; per model;
|
|
311
|
-
cache-hit %; ASCII sparkline. File
|
|
312
|
-
`~/.pi/agent/wishcraft-usage.json` (append-only, compaction at
|
|
313
|
-
threshold).
|
|
314
|
-
- `wishcraft.tokenBudget.daily` colors the segment red and warns
|
|
315
|
-
in the welcome at 80% / 100%. Never blocking.
|
|
316
|
-
|
|
317
|
-
Done: substring filter tests; usage-ledger tests; `/tps` reads
|
|
318
|
-
the same ring as the segment (no second source of truth).
|
|
319
|
-
|
|
320
|
-
---
|
|
178
|
+
## vNext Milestone: The Stacked PR Plan
|
|
321
179
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
Shipped. The 0.x train ends at this cut. Preset editor and skill
|
|
325
|
-
install-from-repo stay post-1.0 (top-15 P2).
|
|
326
|
-
|
|
327
|
-
- [x] `/skills doctor` — broken frontmatter, long descriptions, global/project
|
|
328
|
-
duplicates, unused skills. Table, not an essay. (GRO-1416, #28)
|
|
329
|
-
- [x] `/skills new` templates — standard, browser-workflow, CLI-workflow,
|
|
330
|
-
review-checklist. No marketplace. (GRO-1417, #32)
|
|
331
|
-
- [x] Policy engine — in-process deny/inject, no spawn. Command hooks remain
|
|
332
|
-
for anything that needs a process. (GRO-1418, #29)
|
|
333
|
-
- [x] Per-segment detail (CHE-41) — `→` in Navigate, snapshot on open.
|
|
334
|
-
- [x] Idea review — `/ideas` overlay: idea / in-progress / done, tags,
|
|
335
|
-
Run with skill X. Welcome widget shows next idea + `/ideas next`.
|
|
336
|
-
(GRO-1419, #31)
|
|
337
|
-
- [x] Status keys — `powerline.tps`, `powerline.ports`, `powerline.preset`,
|
|
338
|
-
`powerline.skills.count` via `ctx.ui.setStatus`. Not the public pitch.
|
|
339
|
-
(GRO-1420)
|
|
340
|
-
- [x] Read-tool hints — continuation hint when core omits a range/offset
|
|
341
|
-
summary. (GRO-1420)
|
|
342
|
-
- [x] English operator UI. (GRO-1422, #24)
|
|
343
|
-
- [x] README lists doctor, new, policy, and idea-review. `banner.png` only.
|
|
344
|
-
|
|
345
|
-
---
|
|
346
|
-
|
|
347
|
-
## Linear
|
|
348
|
-
|
|
349
|
-
| Ticket | Actie |
|
|
350
|
-
|---|---|
|
|
351
|
-
| GRO-1060 fork cleanup | Done. Release-pad bewezen. CHANGELOG niet inkorten. Versie niet resetten. `banner.png` blijft. |
|
|
352
|
-
| GRO-1061 CI queue | Ops, niet deze roadmap. |
|
|
353
|
-
| CHE-40 `/powerline` tab | Done (#18 / 0.19.2). |
|
|
354
|
-
| CHE-41 per-segment detail | Done. `→` in Navigate; snapshot on open; `alt+i` stays ports. |
|
|
355
|
-
| CHE-42 drill-down | Done (#19 + Configure in #13). |
|
|
356
|
-
| GRO-1414 0.20 leftovers | Done (#20 / 0.22.0). |
|
|
180
|
+
The complete vNext architecture is detailed in **[`docs/design/vnext-release-plan.md`](docs/design/vnext-release-plan.md)** and executed across 9 stacked pull requests:
|
|
357
181
|
|
|
358
|
-
|
|
359
|
-
|
|
182
|
+
```mermaid
|
|
183
|
+
graph LR
|
|
184
|
+
PR0["PR0: Design Corpus"] --> PR1["PR1: Motion Engine"]
|
|
185
|
+
PR1 --> PR2["PR2: Semantic Tokens"]
|
|
186
|
+
PR2 --> PR3["PR3: Preset Contract"]
|
|
187
|
+
PR3 --> PR4["PR4: Animated Signal"]
|
|
188
|
+
PR4 --> PR5["PR5: Wishcraft Deck"]
|
|
189
|
+
PR5 --> PR6["PR6: Appearance & Gallery"]
|
|
190
|
+
PR6 --> PR7["PR7: First-Class A11y"]
|
|
191
|
+
PR7 --> PR8["PR8: Craft, Skills & Docs"]
|
|
192
|
+
```
|
|
360
193
|
|
|
361
194
|
---
|
|
362
195
|
|
|
@@ -373,55 +206,3 @@ die package nog leeft.
|
|
|
373
206
|
- TPS-core blijft 1s sliding window over 5s-ring. Geen regressie
|
|
374
207
|
naar session-average of per-render EMA (beide spikten:
|
|
375
208
|
`tps:12775`).
|
|
376
|
-
|
|
377
|
-
---
|
|
378
|
-
|
|
379
|
-
## Residual risks
|
|
380
|
-
|
|
381
|
-
- `SelectList.setFilter` matcht alleen prefix op `value`. Overlay-chrome
|
|
382
|
-
filtert zelf op substring (GRO-1414). Skills-manager had dat al.
|
|
383
|
-
- `npm deprecate` van de oude naam faalt tot de scope-owner het
|
|
384
|
-
token verruimt. Gebruikers die `pi-powerline-footer` installeren
|
|
385
|
-
blijven op 0.17.2.
|
|
386
|
-
- Hooks spawnen processen. Default timeout 30s; kill-switch
|
|
387
|
-
`wishcraft.hooksEnabled` bestaat al op `main`.
|
|
388
|
-
- Repairs op core-tools raken we niet aan. Als DeepSeek-achtige
|
|
389
|
-
modellen daar alsnog op stuklopen, is dat een gesprek met pi
|
|
390
|
-
core, geen stille override.
|
|
391
|
-
- `loadSkills` API-drift: we pinnen `@earendil-works/pi-coding-agent`
|
|
392
|
-
`>=0.81.0 <0.85.0`. 0.20 neemt de publieke export over; bij
|
|
393
|
-
breaking change blijven we op eigen scan tot de pin omhoog kan.
|
|
394
|
-
- Usage-ledger corruptie: best-effort write, kapot JSON → leeg
|
|
395
|
-
object, nooit throw op de input-path.
|
|
396
|
-
- ChefGroep-keys in 1.0 mogen de publieke README niet gijzelen.
|
|
397
|
-
|
|
398
|
-
---
|
|
399
|
-
|
|
400
|
-
## Rollback
|
|
401
|
-
|
|
402
|
-
- PR A–H: revert-commit op `main`. Geen force-push.
|
|
403
|
-
- 0.19-tag te vroeg: laat de tag staan, ship `0.19.1` met de fix.
|
|
404
|
-
Tags niet herschrijven.
|
|
405
|
-
- Fork-tags (51 stuks) zijn weg. Recovery = upstream remote
|
|
406
|
-
`nicobailon/pi-powerline-footer` opnieuw fetchen, niet onze
|
|
407
|
-
`v0.10.0+` overschrijven.
|
|
408
|
-
- DevDep-bumps (pi-* 0.84.2, TS 7) horen in een eigen PR met
|
|
409
|
-
`npm ci` + de verify-trio. Revert = die PR revert + `npm ci`.
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
## Checklist (1:1 met 0.19)
|
|
414
|
-
|
|
415
|
-
- [x] PR A gemerged: filter, debris, cache, triggers, bash-leaks,
|
|
416
|
-
CodeQL. Verify-trio groen. (#12)
|
|
417
|
-
- [x] `npm pack --dry-run` bevat geen `ook.md` / `test.md`.
|
|
418
|
-
- [x] PR B gemerged: labels, template, TPS-opties, visibility.
|
|
419
|
-
Verify-trio groen. (#12)
|
|
420
|
-
- [x] Gallery-contract gemerged (`chore/pi-dev-gallery`): keywords,
|
|
421
|
-
`publishConfig.access`, `pi.image`, `npm run verify:package`. (#11)
|
|
422
|
-
- [x] PR C: merge to `main` tagged `v0.19.0` then `v0.19.1` then
|
|
423
|
-
`v0.19.2` and published (`npm view` = `0.19.2`). Same-job bump
|
|
424
|
-
publish via #16. CHE-40 tab-complete via #18.
|
|
425
|
-
- [x] README skills-sectie waar; deze ROADMAP in sync met 0.19.2.
|
|
426
|
-
- [x] CHE-40: `/powerline` subcommand-tab geland (#18). CHE-41/42
|
|
427
|
-
hernoemd naar wishcraft.
|
package/docs/commands.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Usage
|
|
4
4
|
|
|
5
|
-
Activates automatically. Toggle with `/powerline
|
|
5
|
+
Activates automatically. Toggle with `/signal` (alias `/powerline`). Switch layouts with `/signal <name>`. `/signal menu` opens Navigate / Configure / Status. `/wishcraft` opens the Deck; `/wishcraft settings` is the flat list. Move the primary row with `/signal placement above|below|toggle`.
|
|
6
6
|
|
|
7
7
|
Use `/cd <path>` to continue the current conversation from another working directory. It supports relative paths, absolute paths, `~`, `~/...`, and directory completions. With no argument, `/cd` prints the current Pi session directory. The command switches into a cwd-updated session file so Pi tools and the footer path segment agree after the change.
|
|
8
8
|
|
|
@@ -101,8 +101,12 @@ Pi core renders the footer as static text, so live click is not possible; action
|
|
|
101
101
|
- `/open-ports`: list listening ports and pick one
|
|
102
102
|
- `/powerline doctor`: diagnostics overlay — settings file validity, unknown presets, Nerd Font detection, git polling, bash-mode status, and queue file health
|
|
103
103
|
- `/powerline export`: export the current preset + effective layout + labels as a JSON snippet (Enter copies it to the clipboard)
|
|
104
|
-
- `alt+p`: **
|
|
104
|
+
- `alt+p`: **Wishcraft Deck** — operator overlay (Home, Signal, Skills, Ideas, Guardrails, Appearance, …). `g` then a jump key (`h` home, `s` signal, `a` appearance). Escape closes. `/signal menu` still opens Navigate / Configure / Status.
|
|
105
105
|
- `alt+i`: **powerline info**: full open-ports list
|
|
106
|
+
- `/wishcraft [route]`: open the Deck at a named route (`appearance`, `skills`, …)
|
|
107
|
+
- `/wishcraft settings`: flat settings TUI, including `powerline.appearance.base` and `powerline.motionLevel`
|
|
108
|
+
- Deck **Motion**: gallery + composer. `t` picks the event, Enter applies, `e` opens the composer
|
|
109
|
+
- Deck **Skills**: workbench list with health; Enter inserts the skill body
|
|
106
110
|
|
|
107
111
|
Both `alt+p` and `alt+i` are rebindable (see Keybinds below); changes apply after `/reload`.
|
|
108
112
|
|
package/docs/configuration.md
CHANGED
|
@@ -190,6 +190,27 @@ Make `open_ports` probe a named SSH host instead of the laptop:
|
|
|
190
190
|
|
|
191
191
|
See [Segments & theming](./segments.md) for the probe's best-effort behavior and requirements.
|
|
192
192
|
|
|
193
|
+
## Appearance
|
|
194
|
+
|
|
195
|
+
`powerline.appearance` is independent of the information layout (`powerline.preset`). The structural base paints Signal colors and motion. Layout presets (`default`, `minimal`, `compact`, `full`, `nerd`, `ascii`, `chef`) keep their segment lists until you change `preset`.
|
|
196
|
+
|
|
197
|
+
```json
|
|
198
|
+
{
|
|
199
|
+
"powerline": {
|
|
200
|
+
"preset": "chef",
|
|
201
|
+
"appearance": {
|
|
202
|
+
"base": "lanternwake"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Bases: `lanternwake`, `threadbound`, `scryglass`, `runebloom`, `moonwell`, `hexforge`, `vellum`, `wisp`, `starweave`, `crucible`. Apply from Deck → Appearance → Enter, `/wishcraft settings`, or `/signal hexforge` (a structural layout name also writes `appearance.base`). Optional mix keys: `palette`, `signalLayout`, `chrome`, `glyphs`, `deck`, `welcome`, `motion`.
|
|
209
|
+
|
|
210
|
+
Until `appearance` is set, Signal keeps the layout preset colors. If `preset` itself is a structural name and `appearance` is empty, that name is treated as the base.
|
|
211
|
+
|
|
212
|
+
`powerline.motionLevel` is `full`, `reduced`, `functional`, or `off`. Host flags still win: `NO_COLOR`, `WISHCRAFT_MOTION`, `WISHCRAFT_SCREEN_READER`, and `PREFER_REDUCED_MOTION`. Deck Motion → Enter writes `powerline.appearance.motion.<event>`.
|
|
213
|
+
|
|
193
214
|
## Status bridge for other extensions
|
|
194
215
|
|
|
195
216
|
Powerline publishes its own state under a stable key set so ChefBar and other extensions can read it without depending on powerline internals:
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# First-Class Accessibility & Graceful Degradation
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Terminal environments vary drastically—from modern GPU-accelerated terminals with full truecolor and Nerd Font glyphs to low-bandwidth SSH sessions, restricted 8-color virtual consoles, and screen readers.
|
|
6
|
+
|
|
7
|
+
Wishcraft treats accessibility and environmental adaptability as first-class architectural constraints, directly resolving ROADMAP P1 Gap #4.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Motion Levels
|
|
12
|
+
|
|
13
|
+
Users can configure global motion sensitivity via settings or keyboard shortcuts:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Motion Sensitivity:
|
|
17
|
+
(●) Full - Continuous sweeps, micro-spinners, and transitions
|
|
18
|
+
( ) Reduced - Instant state changes; continuous loops replaced by static glyphs
|
|
19
|
+
( ) Functional Only - Task indicators active; decorative ambient motion disabled
|
|
20
|
+
( ) Off - 100% static display; zero animated frames
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Environment Degradation Matrix
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌───────────────────┬───────────────────┬───────────────────┬────────────────────┐
|
|
29
|
+
│ ENVIRONMENT │ MOTION BEHAVIOR │ COLOR PALETTE │ GLYPH RENDERING │
|
|
30
|
+
├───────────────────┼───────────────────┼───────────────────┼────────────────────┤
|
|
31
|
+
│ Modern Truecolor │ Full FPS & Sweeps │ True 24-bit RGB │ Full Nerd Fonts │
|
|
32
|
+
│ Standard 256 Color│ Full FPS & Sweeps │ ANSI-256 Mapped │ Unicode / Nerd │
|
|
33
|
+
│ Basic 8/16 Color │ Simplified Pulse │ Basic ANSI │ Clean ASCII │
|
|
34
|
+
│ NO_COLOR Set │ Glyphs Active │ No ANSI Escapes │ Unicode / ASCII │
|
|
35
|
+
│ prefers-reduced │ Discrete States │ Full Color │ Standard Glyphs │
|
|
36
|
+
│ Screen Reader │ Disabled (0 FPS) │ High Contrast │ Descriptive Text │
|
|
37
|
+
└───────────────────┴───────────────────┴───────────────────┴────────────────────┘
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Concrete Degradation Policies
|
|
43
|
+
|
|
44
|
+
### 1. `NO_COLOR` Compliance
|
|
45
|
+
When the `NO_COLOR` environment variable is detected:
|
|
46
|
+
- All ANSI color codes and RGB background styling are stripped.
|
|
47
|
+
- Spatial layout, separators, and glyph animations remain active to convey status through structure.
|
|
48
|
+
|
|
49
|
+
### 2. `prefers-reduced-motion`
|
|
50
|
+
When reduced motion is requested by the OS or user configuration:
|
|
51
|
+
- Continuous sweeps along the Signal track are disabled.
|
|
52
|
+
- Spinners transition immediately to static state markers (`[..]`, `[ok]`, `[!]`).
|
|
53
|
+
- Transient notifications appear statically without fade-in or slide-in transitions.
|
|
54
|
+
|
|
55
|
+
### 3. Screen Reader Mode
|
|
56
|
+
- Motion engine is completely stopped (0 FPS).
|
|
57
|
+
- Powerline separators and visual spacers are suppressed.
|
|
58
|
+
- Status is formatted as clean, semantic plain text (e.g. `Model: GPT-5.6 | Git: main (clean) | State: Streaming | Context: 47%`).
|
|
59
|
+
|
|
60
|
+
### 4. ASCII Fallback Strategy
|
|
61
|
+
Every custom Unicode icon and Nerd Font symbol provides a guaranteed 1-to-1 ASCII equivalent:
|
|
62
|
+
|
|
63
|
+
| Semantic Icon | Nerd Font Glyph | Unicode Default | ASCII Fallback |
|
|
64
|
+
| :--- | :--- | :--- | :--- |
|
|
65
|
+
| Model | `` | `◈` | `[*]` |
|
|
66
|
+
| Git Branch | `` | `⎇` | `branch:` |
|
|
67
|
+
| Git Clean | `✔` | `✓` | `ok` |
|
|
68
|
+
| Git Dirty | `✎` | `⚡` | `*` |
|
|
69
|
+
| Streaming | `` | `✦` | `~` |
|
|
70
|
+
| Tool Call | `` | `◆` | `>` |
|
|
71
|
+
| Error | `` | `✗` | `ERR` |
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Deck Layout & Interactive Route Architecture
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The **Wishcraft Deck** (`Alt+P` / `/wishcraft`) is the central control surface for the agent operator. It replaces fragmented menus with a cohesive, keyboard-first modal overlay built inside `ctx.ui.custom`.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## The Continuous Surface Design
|
|
10
|
+
|
|
11
|
+
Unlike cheap TUIs that stack boxes inside boxes with conflicting borders, the Deck utilizes a **single continuous outer frame** partitioned into an ambient header, the active route viewport, and a contextual footer.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
╭────────────────────────────── WISHCRAFT DECK ──────────────────────────────╮
|
|
15
|
+
│ ◈ GPT-5.6 HIGH main +12 context 47% ◆ STREAMING │
|
|
16
|
+
├──────────────┬──────────────────────────────────────┬───────────────────────┤
|
|
17
|
+
│ NAVIGATION │ ACTIVE ROUTE: HOME │ ACTIVITY FEED │
|
|
18
|
+
│ │ │ │
|
|
19
|
+
│ ◉ Home │ CURRENT SESSION │ 21:16 read_file │
|
|
20
|
+
│ ◆ Signal │ ◆ Streaming response │ 21:16 grep_pattern │
|
|
21
|
+
│ ◇ Skills 27 │ ━━━━╾✦╼━━━━━━━━━━━━ │ 21:15 skill.load │
|
|
22
|
+
│ ◇ Ideas 4 │ │ │
|
|
23
|
+
│ ◇ Guardrails │ Context Capacity │ SKILLS HEALTH │
|
|
24
|
+
│ ◇ Shell │ ████████░░░░░ 47% (94k / 200k) │ ✓ 25 healthy │
|
|
25
|
+
│ ◇ Usage │ │ ! 2 warnings │
|
|
26
|
+
│ ◇ Appearance │ NEXT INTENT │ │
|
|
27
|
+
│ ◇ Motion │ Improve Signal motion engine │ GUARDRAILS │
|
|
28
|
+
│ ◇ Shortcuts │ [Run] [Open Skill] [Review] │ Policy: STRICT (Enf) │
|
|
29
|
+
├──────────────┴──────────────────────────────────────┴───────────────────────┤
|
|
30
|
+
│ / Search g s Skills g i Ideas ? Help Esc Close Deck │
|
|
31
|
+
╰─────────────────────────────────────────────────────────────────────────────╯
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Route Catalog & Deep Links
|
|
37
|
+
|
|
38
|
+
| Route | Deep Link Command | Purpose & Main Components |
|
|
39
|
+
| :--- | :--- | :--- |
|
|
40
|
+
| **`Home`** | `/wishcraft` / `Alt+P` | Live session overview, intent card, context bar, recent activity stream. |
|
|
41
|
+
| **`Signal`** | `/signal` | Visual powerline editor, lane assignments, separator picker. |
|
|
42
|
+
| **`Skills`** | `/skills` | Skill catalog, inline creation wizard, health diagnostics. |
|
|
43
|
+
| **`Skills Doctor`**| `/skills doctor` | Deep validation of skill frontmatter, descriptions, and triggers. |
|
|
44
|
+
| **`Ideas`** | `/ideas` | Rapid capture and organization of intent notes and future tasks. |
|
|
45
|
+
| **`Guardrails`** | `/guardrails` | Safety policies, denial logs, execution boundaries. |
|
|
46
|
+
| **`Shell`** | `/shell` | Execution environment inspect, tool binary availability. |
|
|
47
|
+
| **`Usage`** | `/usage` | Detailed token statistics and context window metrics. |
|
|
48
|
+
| **`Appearance`**| `/appearance` | Preset picker, semantic token overrides, layout density. |
|
|
49
|
+
| **`Motion`** | `/motion` | Motion Gallery, Composer, accessibility sensitivity sliders. |
|
|
50
|
+
| **`Shortcuts`** | `/shortcuts` | Keyboard navigation and jump-mode cheat sheet. |
|
|
51
|
+
| **`Diagnostics`**| `/diagnostics` | Terminal capabilities, color support, and encoding checks. |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Navigation Ergonomics
|
|
56
|
+
|
|
57
|
+
Wishcraft combines **Posting-style jump shortcuts** with a fast **fuzzy command palette**:
|
|
58
|
+
|
|
59
|
+
1. **Global Jump Keys**:
|
|
60
|
+
- `g h` $\rightarrow$ Jump to Home
|
|
61
|
+
- `g s` $\rightarrow$ Jump to Skills
|
|
62
|
+
- `g i` $\rightarrow$ Jump to Ideas
|
|
63
|
+
- `g a` $\rightarrow$ Jump to Appearance
|
|
64
|
+
- `g m` $\rightarrow$ Jump to Motion
|
|
65
|
+
2. **Fuzzy Search Palette (`/`)**:
|
|
66
|
+
- Typing `/` anywhere in the Deck opens the instant search bar.
|
|
67
|
+
- Matches routes, config keys, actions, and skills with real-time highlighted filtering.
|
|
68
|
+
3. **Key Hints**:
|
|
69
|
+
- The footer always renders context-relevant shortcuts, eliminating the need to memorize keybindings.
|