Bump VERSION to 0.10.0
All checks were successful
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-runners (pull_request) Has been skipped
CI/CD / e2e-smoke (pull_request) Has been skipped
CI/CD / test-frontend (pull_request) Successful in 6s
CI/CD / test-go-pg (pull_request) Successful in 2m45s
CI/CD / test-sqlite (pull_request) Successful in 3m6s
CI/CD / build-and-deploy (pull_request) Successful in 1m18s
All checks were successful
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-runners (pull_request) Has been skipped
CI/CD / e2e-smoke (pull_request) Has been skipped
CI/CD / test-frontend (pull_request) Successful in 6s
CI/CD / test-go-pg (pull_request) Successful in 2m45s
CI/CD / test-sqlite (pull_request) Successful in 3m6s
CI/CD / build-and-deploy (pull_request) Successful in 1m18s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
39
CHANGELOG.md
39
CHANGELOG.md
@@ -2,6 +2,45 @@
|
|||||||
|
|
||||||
All notable changes to Armature are documented here.
|
All notable changes to Armature are documented here.
|
||||||
|
|
||||||
|
## v0.10.0 — Panel Manifest + Lifecycle
|
||||||
|
|
||||||
|
First version in the Panels series. Adds the plumbing layer for
|
||||||
|
composable companion views — a new rendering tier between surfaces
|
||||||
|
(full-page) and block renderers (inline). No presentation UI ships
|
||||||
|
in this version; floating and docked chrome arrive in v0.10.1–v0.10.2.
|
||||||
|
|
||||||
|
**Manifest: `panels` field (provider + consumer)**
|
||||||
|
|
||||||
|
- Provider form: packages declare panels as a map of `{ entry, title,
|
||||||
|
icon, description, min_width, min_height, default_width, default_height }`
|
||||||
|
- Consumer form: surfaces declare panel dependencies as an array of
|
||||||
|
`"package.panel"` strings (soft dependency — install succeeds even
|
||||||
|
if provider is missing)
|
||||||
|
- Validation enforces required `entry` and `title` for providers,
|
||||||
|
`pkg.panel` dot-format for consumers
|
||||||
|
|
||||||
|
**Backend: panel resolution at surface load**
|
||||||
|
|
||||||
|
- `PanelMeta` struct carries resolved panel metadata
|
||||||
|
- `resolvePanels()` resolves consumer references against installed and
|
||||||
|
enabled provider packages at surface render time
|
||||||
|
- `window.__PANELS__` injected into base template for extension surfaces
|
||||||
|
- Soft-dependency warning logged at install time for unresolved consumers
|
||||||
|
|
||||||
|
**Frontend: `sw.panels` SDK module**
|
||||||
|
|
||||||
|
- `sw.panels.open(panelId, opts)` — lazy-loads panel JS via dynamic
|
||||||
|
`import()`, mounts into container, caches module for reuse
|
||||||
|
- `sw.panels.close(panelId)` — calls cleanup, removes container
|
||||||
|
- `sw.panels.toggle(panelId, opts)` — open if closed, close if open
|
||||||
|
- `sw.panels.isOpen(panelId)` / `sw.panels.isAvailable(panelId)` — boolean queries
|
||||||
|
- `sw.panels.list()` / `sw.panels.active()` — registered and open panel IDs
|
||||||
|
- Events: `panels.opened` and `panels.closed` emitted on lifecycle transitions
|
||||||
|
- Mount context: `{ sw, params, panelId, close, resize }`
|
||||||
|
- Unstyled container (position:fixed div) — v0.10.1 adds FloatingPanel chrome
|
||||||
|
|
||||||
|
**Tests:** 10 new — 6 manifest validation, 4 panel resolution
|
||||||
|
|
||||||
## v0.9.9 — Surface Access via Roles
|
## v0.9.9 — Surface Access via Roles
|
||||||
|
|
||||||
Surfaces can now gate access by team role. A manifest declaring
|
Surfaces can now gate access by team role. A manifest declaring
|
||||||
|
|||||||
100
ROADMAP.md
100
ROADMAP.md
@@ -1,7 +1,5 @@
|
|||||||
# Armature — Roadmap
|
# Armature — Roadmap
|
||||||
|
|
||||||
## Current: v0.9.x — Workflow Redesign + Multi-Surface Packages
|
|
||||||
|
|
||||||
Self-hosted extensible platform kernel. Auth, identity, packages, Starlark
|
Self-hosted extensible platform kernel. Auth, identity, packages, Starlark
|
||||||
sandbox, storage, realtime, and ops are kernel primitives. Everything else
|
sandbox, storage, realtime, and ops are kernel primitives. Everything else
|
||||||
is an extension.
|
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.x — Multi-Surface Packages + Workflow Redesign
|
||||||
|
|
||||||
**v0.9.0 — Multi-Surface Packages** *(completed)*
|
| Version | Title |
|
||||||
|
|---------|-------|
|
||||||
Packages declare a `surfaces` array with per-path access controls,
|
| v0.9.0 | Multi-Surface Packages |
|
||||||
titles, and layouts. Unified route tree dispatches between surface
|
| v0.9.1 | Server-Side Sub-Path Routing |
|
||||||
rendering and ext API calls. `sw.navigate()` for client-side sub-path
|
| v0.9.2 | Converter Consolidation |
|
||||||
routing. Design doc: `docs/DESIGN-multi-surface.md`.
|
| v0.9.3 | Team User Roles |
|
||||||
|
| v0.9.4 | Package Adoption + Roles |
|
||||||
**v0.9.1 — Server-Side Sub-Path Routing** *(completed)*
|
| v0.9.5 | Typed Forms SDK |
|
||||||
|
| v0.9.6 | Stage Mode Collapse |
|
||||||
Consolidated root and catch-all route handlers into a unified dispatcher.
|
| v0.9.7 | Workflow Starlark Write Ops |
|
||||||
Added `aggregateAccess()` for early auth short-circuit on all-authenticated
|
| v0.9.8 | Routing SDK Primitive |
|
||||||
packages. SDK seeds initial history state for back-button resilience.
|
| v0.9.9 | Surface Access via Roles |
|
||||||
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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 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
|
Panels are a new kernel rendering tier between surfaces (full-page) and
|
||||||
block renderers (inline). They solve composable companion views — e.g.,
|
block renderers (inline). They solve composable companion views — e.g.,
|
||||||
a notes reference panel inside chat. Design doc: `docs/DESIGN-panels.md`.
|
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 |
|
| Version | Title |
|
||||||
|---------|-------|
|
|---------|-------|
|
||||||
| v0.10.0 | Panel Manifest + Lifecycle |
|
|
||||||
| v0.10.1 | FloatingPanel Primitive |
|
| v0.10.1 | FloatingPanel Primitive |
|
||||||
| v0.10.2 | Docked Panels + Mode Transitions |
|
| v0.10.2 | Docked Panels + Mode Transitions |
|
||||||
| v0.10.3 | Panel Communication Patterns |
|
| v0.10.3 | Panel Communication Patterns |
|
||||||
|
|||||||
Reference in New Issue
Block a user