Skip to content

fix(w6): restore dead operator surfaces — preferences, team-templates, skills route order, live profile pill (rows ②③⑤)#56

Merged
webdevtodayjason merged 1 commit into
mainfrom
fix/w6-restore-v3
Jun 11, 2026
Merged

fix(w6): restore dead operator surfaces — preferences, team-templates, skills route order, live profile pill (rows ②③⑤)#56
webdevtodayjason merged 1 commit into
mainfrom
fix/w6-restore-v3

Conversation

@webdevtodayjason

Copy link
Copy Markdown
Owner

W6-B v3 slice (worker w6-restore, orchestrator-verified).

  • Row ② /api/preferences 404 → mounted the never-mounted preferences module in components/evy/server.ts (GET/POST/DELETE/reset, exact wire shape the tab was built against) + registered both evy preference tools (boot tool count 79→81).
  • Row ③a /api/team-templates 404 → routes mounted onto the existing v2.8.0 TOML-roster module (list + detail, 5 seeded templates prove out).
  • Row ③b /api/skills/categorized 400 → route existed but was shadowed by the /api/skills/(.+) catch-all; catch-all moved to section end (also un-shadows /api/skills/evy/<name>).
  • Row ⑤ profile pill froze after first SSE drop (own one-shot EventSource, deliberate no-reconnect) → now rides the canonical connect() lifecycle: profile_swapped frames paint instantly, every SSE (re)open re-fetches /api/profile; 30s poll fallback retained.

Orchestrator verification: dashboard suite 196/0 + touched-module suites 47/0 reproduced in clean worktree; zero merge conflicts vs main (incl. W6-C); hunk ranges disjoint from tier1 block. Worker's end-to-end curl proofs ran on scratch servers (18787/18788, scratch config); live re-proof lands at W6 wave close after service restart. 3 found-latents closet-logged (#423–425).

Release stamping at W6 wave close.

🤖 Generated with Claude Code

…plates route, skills route order, live profile pill

W6 rows ②③⑤ — all restorations of shipped-but-unwired behavior, no new
features:

Row ② /api/preferences 404 end-to-end: components/evy/preferences.ts
(v2.8.1) shipped complete but server.ts never mounted its HTTP surface,
and tools/preferences.ts was never registered. Mount GET /preferences,
POST/DELETE /preferences/<cat>/<key>, POST /preferences/reset (gated on
{confirm:true}) — the exact wire shape the dashboard proxy + Preferences
tab were built against — and register evy_get_preferences /
evy_set_preference in the tool registry.

Row ③ /api/team-templates 404: components/evy/team-templates.ts (v2.8.0)
and the Templates tab both shipped, route never mounted. Mount GET
/api/team-templates (listTemplates → {ok,templates,errors}) and GET
/api/team-templates/<name> (loadTemplate → {ok,template}, 404 on miss).

Row ③ /api/skills/categorized 400: the GET /api/skills/(.+) catch-all
predated the v2.8.1 categorized + evy/* routes and sat ABOVE them, so
"categorized" parsed as a one-segment skill id → 400, and
/api/skills/evy/<name> GETs never reached their handler. Catch-all moved
to the end of the /api/skills section; behavior for real skill ids
unchanged.

Row ⑤ profile-pill staleness: the pill opened its own one-shot
EventSource on /api/master/events with no reconnect — the first drop
(master restart, sleep/wake) killed its real-time path until page
reload. It now rides the canonical connect() lifecycle in tabs/chat.js
via lazy module-scope hooks: profile_swapped frames paint instantly, and
every SSE [re]connect re-fetches /api/profile. 30s poll fallback stays.

Gates: bun test dashboard/__tests__/ 196 pass / 0 fail; preferences +
team-templates suites 47 pass / 0 fail. Curl-proven on a scratch
master+dashboard pair (18788/18787): all previously-4xx endpoints 200
with the tab-expected payloads; skills catch-all regression-checked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@webdevtodayjason
webdevtodayjason merged commit e80f011 into main Jun 11, 2026
@webdevtodayjason
webdevtodayjason deleted the fix/w6-restore-v3 branch June 11, 2026 21:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant