Feat v0.8.5 extension composability (#72)
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 2m44s
CI/CD / test-sqlite (push) Successful in 2m54s
CI/CD / build-and-deploy (push) Successful in 52s
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 2m44s
CI/CD / test-sqlite (push) Successful in 2m54s
CI/CD / build-and-deploy (push) Successful in 52s
Co-authored-by: Jeffrey Smith <jasafpro@gmail.com> Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #72.
This commit is contained in:
62
CHANGELOG.md
62
CHANGELOG.md
@@ -2,6 +2,68 @@
|
||||
|
||||
All notable changes to Armature are documented here.
|
||||
|
||||
## v0.8.5 — Extension Composability
|
||||
|
||||
Extensions can now compose with each other through declared slots, UI
|
||||
contributions, and cross-package function calls. This is the last kernel
|
||||
feature before 1.0 — the platform now supports the "extensions extending
|
||||
extensions" pattern.
|
||||
|
||||
**Manifest declarations**
|
||||
|
||||
- Surfaces declare named `slots` in their manifest (e.g., `toolbar-actions`,
|
||||
`note-footer`) with context documentation for extension authors.
|
||||
- Extensions declare `contributes` entries targeting `{host}:{slot}` names
|
||||
(e.g., `notes:toolbar-actions`). Coupling is soft — install order doesn't
|
||||
matter.
|
||||
- The kernel validates slot/contribution conventions at install time.
|
||||
|
||||
**Backend: `lib.require()` relaxation**
|
||||
|
||||
- `lib.require()` now works with any package that declares `exports`, not
|
||||
just `type: "library"` packages. A full package (with surfaces, settings,
|
||||
UI) can export callable functions for cross-package use.
|
||||
- The existing `depends` and permission model is unchanged — the called
|
||||
function runs with the target package's permissions.
|
||||
|
||||
**Admin slots endpoint**
|
||||
|
||||
- `GET /api/v1/admin/slots` returns an aggregated map of all declared slots
|
||||
across installed packages with their contributors.
|
||||
- Uninstalling a package that declares slots warns about orphaned
|
||||
contributions in other packages.
|
||||
|
||||
**SDK additions**
|
||||
|
||||
- `sw.slots.renderAll(name, context)` — convenience helper for host surfaces
|
||||
to render all components in a slot with error isolation.
|
||||
- `sw.slots.declare(name, description)` — runtime slot declaration for
|
||||
discoverability and debugging.
|
||||
|
||||
**Documentation**
|
||||
|
||||
- `PACKAGE-FORMAT.md` — added `slots`, `contributes`, `depends` field docs.
|
||||
- `EXTENSION-GUIDE.md` — new "Extension Composability" section with slot
|
||||
naming conventions, contribution patterns, and cross-package call examples.
|
||||
- `STARLARK-REFERENCE.md` — updated `lib` module to reflect exports-based
|
||||
calling (not library-type-only).
|
||||
|
||||
**Modified files:**
|
||||
|
||||
- `server/sandbox/lib_module.go` — type check → exports check
|
||||
- `server/handlers/extensions.go` — composability field validation
|
||||
- `server/handlers/packages.go` — orphaned contribution warning
|
||||
- `server/main.go` — admin slots route registration
|
||||
- `src/js/sw/sdk/slots.js` — `renderAll()`, `declare()`, `declarations()`
|
||||
- `docs/PACKAGE-FORMAT.md` — slots, contributes, depends
|
||||
- `docs/EXTENSION-GUIDE.md` — composability section
|
||||
- `docs/STARLARK-REFERENCE.md` — lib module update
|
||||
- `docs/DESIGN-extension-composability.md` — status Draft → Implemented
|
||||
|
||||
**New files:**
|
||||
|
||||
- `server/handlers/admin_slots.go` — admin slot aggregation endpoint
|
||||
|
||||
## v0.8.4 — Documentation Refresh + Surface Sizing Fix
|
||||
|
||||
Eight versions of module additions (v0.7.5–v0.8.3) shipped without a
|
||||
|
||||
Reference in New Issue
Block a user