Changeset 0.31.1 (#204)

Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit is contained in:
2026-03-19 10:21:40 +00:00
committed by xcaliber
parent 071dea8904
commit 8364440081
17 changed files with 1186 additions and 339 deletions

View File

@@ -38,10 +38,12 @@ v0.9.xv0.28.7 Foundation through Platform Polish ✅
v0.30.1 SDK Adoption ✅ │
v0.30.2 Workflow Packages ✅ │
v0.31.0 Editor + SDK ✅ │
v0.31.1 SDK Exercise ✅ │
v0.31.2 Team Workflows │
│ │
══════╪═══════════════════════════════╪══════
│ MVP v0.50.0 │
│ (v0.31.0 + v0.34.0 │
│ (v0.31.2 + v0.34.0 │
│ + mobile + deployment docs) │
══════╪═══════════════════════════════╪══════
@@ -284,8 +286,55 @@ Depends on: v0.30.2.
- [x] NotePanel: pagination, select mode, sticky selection bar, `note-panel-root` class (no PanelRegistry conflict)
**Known remaining (visual polish, not blocking):**
- [ ] UserMenu flyout contrast on very dark backgrounds (functional, low contrast)
- [ ] Editor chat pane duplicates streaming/model-selector logic (~250 lines) — should move to ChatPane or SDK
- [x] UserMenu flyout contrast on very dark backgrounds — fixed in v0.31.1 CS0+CS1
- [x] Editor chat pane duplicates streaming/model-selector logic — absorbed into ChatPane in v0.31.1 CS2
### v0.31.1 — SDK Exercise Surface ✅
Build a dashboard surface package exercising every `sw.*` primitive
with zero component CSS overrides. Fix 4 SDK bugs first.
Depends on: v0.31.0.
**SDK Bug Fixes (CS0CS2):**
- [x] Flyout unification — 3 competing CSS systems consolidated into `.sw-menu-flyout` in primitives.css
- [x] Flyout positioning — `position:fixed` escape hatch for overflow-clipped extension surfaces
- [x] Menu unification — UserMenu uses `.sw-menu-flyout` + `data-position`, same as `sw.menu()`
- [x] ChatPane self-contained — standalone mode with streaming, model selector, history (editor slimmed ~220 lines)
**Dashboard Package (CS3CS4):**
- [x] `packages/dashboard/` — type "full", route `/s/dashboard`
- [x] Exercises all 14 primitives: userMenu, menu, toolbar, tabs, dropdown, chat, notes, modal, confirm, toast, on/emit, api, user/isAdmin, theme
- [x] Layout-only CSS — zero references to SDK component classes
- [x] E2E tests: install, settings, export/import round-trip (7 tests)
### v0.31.2 — Team Workflow Self-Service
Close the gap: team admins can create and manage workflows for their
team without requiring platform admin access. Backend routes exist
(`/workflows` with `team_id`), but no team-scoped routes or UI.
Depends on: v0.31.1.
**CS0 — Backend: Team-Scoped Workflow Routes:**
- [ ] `/teams/:teamId/workflows` route group behind `RequireTeamAdmin`
- [ ] CRUD: GET (list), POST (create, inject team_id), PATCH (update), DELETE
- [ ] Stage CRUD: GET, POST, PUT, DELETE, PATCH reorder — scoped to team workflows
- [ ] Publish: `POST /teams/:teamId/workflows/:id/publish`
- [ ] Ownership guard: all mutating ops verify `workflow.team_id == :teamId`
- [ ] Reuse existing `WorkflowHandler` methods — team ID injection, not new logic
**CS1 — Frontend: Workflows Tab in Team Admin:**
- [ ] 9th tab "Workflows" in team admin modal
- [ ] List team workflows with status badge (active/inactive)
- [ ] Create/edit workflow form (name, slug, entry_mode, branding, retention)
- [ ] Stage builder (add/reorder/delete stages, persona picker, history_mode)
- [ ] Publish button with version display
- [ ] Adapted from platform admin workflow UI (`_loadAdminWorkflows` reference)
**Future (not blocking):**
- Team admin modal → full surface package (when tab count justifies it)
---
@@ -371,8 +420,8 @@ on a 3-node cluster. An IT team can operate the platform without
reading Go source code. Team admins build workflows visually.
**Requires all of:**
- Extension track through v0.31.0 (full package ecosystem, visual
workflow builder, SDK-based surfaces, editor package proving E2E)
- Extension track through v0.31.2 (full package ecosystem, visual
workflow builder, SDK-based surfaces, team workflow self-service)
- Operations track through v0.34.0 (multi-replica HA, observability,
data portability)