Changeset 0.28.7 (#193)

This commit is contained in:
2026-03-15 15:45:00 +00:00
parent bffda043db
commit 3237d55e0c
82 changed files with 2481 additions and 2771 deletions

View File

@@ -1,5 +1,65 @@
# Changelog
## [0.28.7] — 2026-03-15
### Summary
Unified packaging. The `surface_registry` and `extensions` tables are
replaced by a single `packages` table. Surfaces, extensions, and combined
"full" packages install through one endpoint (`POST /admin/packages/install`)
with one archive format (`.pkg`). Task RBAC pre-positions the `task.starlark`
permission gate for v0.29.0.
**DB rebuild required.** Migrations 012 and 016 are rewritten in-place.
Extension surfaces must be re-installed after upgrade. Builtin extensions
and core surfaces re-seed automatically.
### New
- **Unified `.pkg` archive format** — zip containing `manifest.json` +
static assets (js/, css/, assets/). Manifest `type` field determines
behavior: `surface` (routable page), `extension` (hooks/tools/pipes),
`full` (both). Missing `type` defaults to `surface` for backward
compatibility with `.surface` archives.
- **`packages` table** — replaces `surface_registry` + `extensions`.
Text slug PKs, unified schema with type/version/tier/scope columns.
`package_user_settings` replaces `extension_user_settings`.
- **`POST /admin/packages/install`** — unified install endpoint.
Validates type-specific requirements (extensions need tools/pipes/hooks,
full packages need both route and extension behavior). Accepts `.pkg`,
`.surface`, `.zip`.
- **Admin packages section** — replaces separate Surfaces + Extensions
sections. Type badges, filter by type, install upload area.
- **`/admin/surfaces/*` aliases** — all surface admin endpoints retained
as aliases pointing to the packages handlers. No URL-breaking change.
- **`task.starlark` permission** — pre-positioned in `AllPermissions`.
Handler rejects `task_type: "starlark"` with 400 referencing v0.29.0.
Not granted to any group, not exposed in admin UI until v0.29.0.
### Changed
- **`SeedBuiltinExtensions``SeedBuiltinPackages`** — writes to
`packages` table with `source='builtin'`, `type='extension'`,
`is_system=true`. Same idempotent version-aware logic.
- **`Stores.Surfaces` + `Stores.Extensions``Stores.Packages`** —
single `PackageStore` interface (15 methods). Compiler-enforced
migration across all handlers, pages, and completion pipeline.
- **Static asset disk path** — `/data/surfaces/``/data/packages/`.
URL path `/surfaces/:id/*path` retained for stability.
- **Extension runtime** — `ListForUser`, `GetUserSettings`,
`SetUserSettings`, `ServeExtensionAsset`, `ListBrowserToolSchemas`
all read from `packages` table. Same API contract, new backing store.
### Removed
- **`extensions` table** (migration 012) — replaced by `packages`.
- **`surface_registry` table** (migration 016) — replaced by `packages`.
- **`extension_user_settings` table** — replaced by `package_user_settings`.
- **`ExtensionStore` interface** — subsumed by `PackageStore`.
- **`SurfaceRegistryStore` interface** — subsumed by `PackageStore`.
- **`surfaces/` repo directory** — renamed to `packages/`.
- **`admin-surfaces.js`** — replaced by `admin-packages.js`.
## [0.28.6] — 2026-03-15
### Summary