Feat v0.10.0 panel manifest lifecycle (#84)
All checks were successful
CI/CD / detect-changes (push) Successful in 4s
CI/CD / test-runners (push) Has been skipped
CI/CD / e2e-smoke (push) Has been skipped
CI/CD / test-frontend (push) Successful in 6s
CI/CD / test-go-pg (push) Successful in 2m50s
CI/CD / test-sqlite (push) Successful in 3m9s
CI/CD / build-and-deploy (push) Successful in 1m1s
All checks were successful
CI/CD / detect-changes (push) Successful in 4s
CI/CD / test-runners (push) Has been skipped
CI/CD / e2e-smoke (push) Has been skipped
CI/CD / test-frontend (push) Successful in 6s
CI/CD / test-go-pg (push) Successful in 2m50s
CI/CD / test-sqlite (push) Successful in 3m9s
CI/CD / build-and-deploy (push) Successful in 1m1s
Co-authored-by: Jeffrey Smith <jasafpro@gmail.com> Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #84.
This commit is contained in:
100
ROADMAP.md
100
ROADMAP.md
@@ -1,7 +1,5 @@
|
||||
# Armature — Roadmap
|
||||
|
||||
## Current: v0.9.x — Workflow Redesign + Multi-Surface Packages
|
||||
|
||||
Self-hosted extensible platform kernel. Auth, identity, packages, Starlark
|
||||
sandbox, storage, realtime, and ops are kernel primitives. Everything else
|
||||
is an extension.
|
||||
@@ -73,97 +71,37 @@ All completed work is documented in `CHANGELOG.md`.
|
||||
|
||||
---
|
||||
|
||||
## Planned
|
||||
|
||||
### v0.9.x — Multi-Surface Packages + Workflow Redesign
|
||||
|
||||
**v0.9.0 — Multi-Surface Packages** *(completed)*
|
||||
|
||||
Packages declare a `surfaces` array with per-path access controls,
|
||||
titles, and layouts. Unified route tree dispatches between surface
|
||||
rendering and ext API calls. `sw.navigate()` for client-side sub-path
|
||||
routing. Design doc: `docs/DESIGN-multi-surface.md`.
|
||||
|
||||
**v0.9.1 — Server-Side Sub-Path Routing** *(completed)*
|
||||
|
||||
Consolidated root and catch-all route handlers into a unified dispatcher.
|
||||
Added `aggregateAccess()` for early auth short-circuit on all-authenticated
|
||||
packages. SDK seeds initial history state for back-button resilience.
|
||||
8 handler integration tests + 5 aggregateAccess unit tests.
|
||||
|
||||
**v0.9.2 — Starlark Converter Consolidation + Snapshot Cleanup** *(completed)*
|
||||
|
||||
Consolidated duplicate Go↔Starlark converters into `sandbox/convert.go`
|
||||
(4 exported functions) and snapshot parsers into `models/snapshot.go`.
|
||||
Standardized on wrapped snapshot format. ~350 lines of duplication removed.
|
||||
Design doc: `docs/DESIGN-workflow-redesign.md`.
|
||||
|
||||
**v0.9.3 — Team User Roles** *(completed)*
|
||||
|
||||
Many-to-many `team_user_roles` table. `RequireRole()` middleware.
|
||||
Manifest `requires_roles` field (advisory). Starlark `teams` module
|
||||
with `get_member_roles()` and `has_role()`. Team-admin UI with role
|
||||
badge chips and assignment dropdown. 10 new tests.
|
||||
|
||||
**v0.9.4 — Package Adoption + Roles** *(completed)*
|
||||
|
||||
`adoptable` manifest field + `team_role_catalog` table. When a team
|
||||
adopts an adoptable package, the package's `requires_roles` auto-populate
|
||||
into the team's role catalog. Adopted packages reference the original via
|
||||
`adopted_from` column (shared assets, no disk duplication).
|
||||
`AdoptTeamWorkflow` deprecated in favor of package-level adoption.
|
||||
4 new endpoints, migration 017, 11 new tests.
|
||||
|
||||
**v0.9.5 — Typed Forms → SDK Primitive** *(completed)*
|
||||
|
||||
Extracted `TypedFormTemplate`, `FormField`, `FormFieldset`, etc. from
|
||||
`models/workflow.go` into a standalone `forms` package. REST endpoint
|
||||
`POST /api/v1/forms/validate`. Starlark `forms.validate()` module.
|
||||
FE SDK: `sw.forms.render()`, `sw.forms.validate()`, `sw.forms.validateRemote()`.
|
||||
Manifest `form_template` accepted at package level. 16 new tests.
|
||||
|
||||
**v0.9.6 — Deprecate `stage_type`, Collapse `stage_mode`** *(completed)*
|
||||
|
||||
`stage_type` deprecated (no longer validated, defaults to "simple").
|
||||
`stage_mode` collapsed from 4→3 values: form / delegated / automated.
|
||||
"review" mapped to "form" on input; review surface removed (~110 lines).
|
||||
Migration 018. 4 package manifests updated.
|
||||
|
||||
**v0.9.7 — Full Read/Write Workflow Starlark Module** *(completed)*
|
||||
|
||||
`WorkflowEngine` interface extracted in sandbox package to break
|
||||
circular import. Four write builtins added: `workflow.start()`,
|
||||
`workflow.advance()`, `workflow.cancel()`, `workflow.submit_signoff()`.
|
||||
`instanceToDict` and `signoffToDict` helpers shared by read+write paths.
|
||||
6 new tests.
|
||||
|
||||
**v0.9.8 — Conditional Routing → SDK Primitive** *(completed)*
|
||||
|
||||
`routing.evaluate(rules, data)` Starlark builtin — a generic decision
|
||||
engine reusable by any extension. 10 operators (exists, not_exists, eq,
|
||||
neq, gt, lt, gte, lte, in, contains), first-match-wins, returns target
|
||||
string or None. Always available (pure computation, no permission).
|
||||
8 new tests.
|
||||
|
||||
**v0.9.9 — Surface Access via Roles** *(completed)*
|
||||
|
||||
`role:ROLENAME` surface access level. User must hold the role in any
|
||||
team (any-team semantics, no URL context needed). `evaluateAccess`
|
||||
promoted to Engine method for store access. `HasRoleInAnyTeam` store
|
||||
method queries both primary and additional roles. Admin bypass, fail-
|
||||
closed on nil store. 10 new tests.
|
||||
| Version | Title |
|
||||
|---------|-------|
|
||||
| v0.9.0 | Multi-Surface Packages |
|
||||
| v0.9.1 | Server-Side Sub-Path Routing |
|
||||
| v0.9.2 | Converter Consolidation |
|
||||
| v0.9.3 | Team User Roles |
|
||||
| v0.9.4 | Package Adoption + Roles |
|
||||
| v0.9.5 | Typed Forms SDK |
|
||||
| v0.9.6 | Stage Mode Collapse |
|
||||
| v0.9.7 | Workflow Starlark Write Ops |
|
||||
| v0.9.8 | Routing SDK Primitive |
|
||||
| v0.9.9 | Surface Access via Roles |
|
||||
|
||||
---
|
||||
|
||||
### v0.10.x — Panels + Composable Layout
|
||||
## Current: v0.10.x — Panels + Composable Layout
|
||||
|
||||
Panels are a new kernel rendering tier between surfaces (full-page) and
|
||||
block renderers (inline). They solve composable companion views — e.g.,
|
||||
a notes reference panel inside chat. Design doc: `docs/DESIGN-panels.md`.
|
||||
|
||||
**v0.10.0 — Panel Manifest + Lifecycle** *(completed)*
|
||||
|
||||
Manifest `panels` field (provider map + consumer array, soft dependency).
|
||||
`resolvePanels()` at surface load. `sw.panels` SDK module with full
|
||||
lifecycle API. Lazy JS loading with module caching. 10 new tests.
|
||||
|
||||
| Version | Title |
|
||||
|---------|-------|
|
||||
| v0.10.0 | Panel Manifest + Lifecycle |
|
||||
| v0.10.1 | FloatingPanel Primitive |
|
||||
| v0.10.2 | Docked Panels + Mode Transitions |
|
||||
| v0.10.3 | Panel Communication Patterns |
|
||||
|
||||
Reference in New Issue
Block a user