Feat v0.7.9 workflow independence (#63)
All checks were successful
CI/CD / detect-changes (push) Successful in 20s
CI/CD / test-runners (push) Has been skipped
CI/CD / e2e-smoke (push) Has been skipped
CI/CD / test-frontend (push) Successful in 25s
CI/CD / test-sqlite (push) Successful in 2m51s
CI/CD / test-go-pg (push) Successful in 3m0s
CI/CD / build-and-deploy (push) Successful in 1m26s

Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #63.
This commit is contained in:
2026-04-02 22:31:47 +00:00
committed by xcaliber
parent 3cdfdcf943
commit a9cf71b76d
27 changed files with 1324 additions and 4205 deletions

View File

@@ -2,6 +2,53 @@
All notable changes to Armature are documented here.
## v0.7.9 — Workflow Independence Audit
Workflows proven independent of chat and all optional packages. Critical
rendering bugs fixed, dead chat UI removed, deferred test debt closed.
**RenderWorkflow Fix (critical)**
- `RenderWorkflow()` was a stub that never loaded instance/stage data — post-start page was broken. Now loads instance by token/ID, resolves current stage, populates all template fields.
- `WorkflowPageData` fields renamed: `ChannelID``EntryToken`, `ChannelTitle``WorkflowTitle`, `ChannelDescription``WorkflowDescription` (vestigial chat-era names)
- Stage modes aligned: template uses Go constants (`form`, `review`, `delegated`, `automated`) instead of legacy `form_only`/`form_chat`
- Dead chat UI removed: chat CSS, split layout, `sendMessage()`, fallback chat branch (~180 lines deleted from `workflow.html`)
- Landing page mode conditionals updated to match Go constants
- OpenAPI `stage_mode` enum corrected (4 occurrences)
**Bug Fixes (found during verification)**
- Entry token resolution: handler passed route param (instance ID) as entry token to JS. Fixed: resolve actual token from `inst.EntryToken` + `?token=` query param.
- Fieldset submit guard: `submitForm()` checked `FORM_TPL.fields` but not `.fieldsets` — progressive forms silently no-op'd. Fixed: accept either.
- Stage advance status check: JS checked `result.status === 'advanced'` but API returns `active`/`completed`. Fixed: on 200 OK with `active`, reload to render next stage.
**Deferred test coverage (carried from v0.7.6)**
- 17 new SQLite store tests: workflow CRUD, stages, instances, lifecycle (advance/complete/cancel/stale), team scope, API tokens, users, groups
- `InstallPackage` decomposed from 400-line monolith into 7 private methods: `receiveUpload`, `parseAndValidateArchive`, `extractPackageAssets`, `registerPackage`, `applySchemaAndPermissions`, `resolveDependencies`, `checkCapabilities`
- `ci/e2e-workflow-nochat.sh` — E2E test for workflow lifecycle without chat
**Discovered issues (deferred to v0.7.10)**
- Public→authenticated stage handoff: visitor sees auth-gated stage form instead of "submitted" screen
- Team member pickup UI: no surface for claiming workflow instances
- Assignment flow: no admin UI for manual instance assignment
**Tests:** 17 new store tests, 1 new E2E script
---
## v0.7.8 — Bug Fixes & Admin Gaps
- `StartBySlug` handler + `/api/v1/workflow-entry/:scope/:slug` route for landing page Start button
- Workflow delete guard: admin endpoint rejects team-scoped workflows (403)
- Package button cleanup: Delete hidden for bundled packages
- Package export: `fetch()` with auth token instead of `window.open()`
- Settings CSS: bottom padding fix for save button cutoff
- Shared `StageForm` component between admin and team-admin; public entry URL with copy button
---
## v0.7.7 — API Tokens + Extension Permissions
Personal access tokens (PATs) for programmatic API access, plus extension-declared