From b41ec7479cc32d44abf281543cff2bf55a584c7e Mon Sep 17 00:00:00 2001 From: Jeffrey Smith Date: Wed, 1 Apr 2026 16:46:11 +0000 Subject: [PATCH 1/3] Feat v0.6.18 CI bundle wiring Wire BUNDLED_PACKAGES env var into Gitea CI so each environment gets the correct package set at boot (dev=*, test=core, prod=full). Update docker-compose.yml default from empty to * for local dev. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitea/workflows/ci.yaml | 4 ++++ CHANGELOG.md | 12 ++++++++++++ VERSION | 2 +- docker-compose.yml | 2 +- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 083beff..7f7abab 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -413,6 +413,7 @@ jobs: echo "MEMORY_LIMIT=512Mi" >> "$GITHUB_OUTPUT" echo "CPU_REQUEST=50m" >> "$GITHUB_OUTPUT" echo "CPU_LIMIT=250m" >> "$GITHUB_OUTPUT" + echo "BUNDLED_PACKAGES=*" >> "$GITHUB_OUTPUT" echo "env_label=dev (PR #${{ gitea.event.pull_request.number }})" >> "$GITHUB_OUTPUT" elif [[ "${{ gitea.ref }}" == refs/tags/v* ]]; then VERSION="${{ gitea.ref_name }}" @@ -429,6 +430,7 @@ jobs: echo "MEMORY_LIMIT=512Mi" >> "$GITHUB_OUTPUT" echo "CPU_REQUEST=100m" >> "$GITHUB_OUTPUT" echo "CPU_LIMIT=500m" >> "$GITHUB_OUTPUT" + echo "BUNDLED_PACKAGES=notes,chat,chat-core,mermaid-renderer,schedules" >> "$GITHUB_OUTPUT" echo "is_release=true" >> "$GITHUB_OUTPUT" echo "env_label=production (${VERSION})" >> "$GITHUB_OUTPUT" else @@ -444,6 +446,7 @@ jobs: echo "MEMORY_LIMIT=512Mi" >> "$GITHUB_OUTPUT" echo "CPU_REQUEST=50m" >> "$GITHUB_OUTPUT" echo "CPU_LIMIT=250m" >> "$GITHUB_OUTPUT" + echo "BUNDLED_PACKAGES=notes,chat,chat-core" >> "$GITHUB_OUTPUT" echo "env_label=test (main)" >> "$GITHUB_OUTPUT" fi @@ -670,6 +673,7 @@ jobs: STORAGE_CLASS: ${{ vars.STORAGE_CLASS }} STORAGE_SIZE: ${{ vars.STORAGE_SIZE || '10Gi' }} STORAGE_BACKEND: ${{ vars.STORAGE_BACKEND || 'pvc' }} + BUNDLED_PACKAGES: ${{ steps.setup.outputs.BUNDLED_PACKAGES }} run: | # Render PVC first (must exist before backend references it) if [[ -n "${STORAGE_CLASS}" ]]; then diff --git a/CHANGELOG.md b/CHANGELOG.md index 358bd9f..0a831df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to Armature are documented here. +## v0.6.18 — CI Bundle Wiring + +Wire `BUNDLED_PACKAGES` env var into the Gitea CI pipeline so each +environment gets the correct package set at boot. + +### Changed + +- **CI: dev deploys** — `BUNDLED_PACKAGES=*` (install all, matches docker-compose default). +- **CI: test deploys** — `BUNDLED_PACKAGES=notes,chat,chat-core` (core surfaces only). +- **CI: prod deploys** — `BUNDLED_PACKAGES=notes,chat,chat-core,mermaid-renderer,schedules`. +- **docker-compose.yml** — default `BUNDLED_PACKAGES` changed from empty to `*` (install all for local dev). + ## v0.6.17 — Bug Fixes & Welcome Logic Fixes broken UI interactions (folder creation, team member add), dropdown diff --git a/VERSION b/VERSION index fa20946..724e8d9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.6.17 +0.6.18 diff --git a/docker-compose.yml b/docker-compose.yml index c67e6a7..e189bb6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,7 +33,7 @@ services: EXT_ALLOW_PRIVATE_IPS: ${EXT_ALLOW_PRIVATE_IPS:-true} LOG_FORMAT: ${LOG_FORMAT:-text} LOG_LEVEL: ${LOG_LEVEL:-info} - BUNDLED_PACKAGES: ${BUNDLED_PACKAGES:-} + BUNDLED_PACKAGES: ${BUNDLED_PACKAGES:-*} # Dev seed users — ignored if ENVIRONMENT=production SEED_USERS: ${SEED_USERS:-alice:password123:user,bob:password456:user,charlie:password789:user} volumes: -- 2.49.1 From ebab0c73ba7c748d748d1993941cc3a4afaced5e Mon Sep 17 00:00:00 2001 From: Jeffrey Smith Date: Wed, 1 Apr 2026 16:47:53 +0000 Subject: [PATCH 2/3] Fix TestBundledInstall_DefaultAllowlist for empty default set v0.6.17 emptied defaultBundledPackages, but this test still expected "notes" to be installed via the curated default set. Update assertions to expect nothing installed when the allowlist is empty. Co-Authored-By: Claude Opus 4.6 (1M context) --- server/handlers/packages_update_test.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/server/handlers/packages_update_test.go b/server/handlers/packages_update_test.go index d8c06dd..6c8a894 100644 --- a/server/handlers/packages_update_test.go +++ b/server/handlers/packages_update_test.go @@ -441,7 +441,8 @@ func TestExportPackage_NotFound(t *testing.T) { } } -// TestBundledInstall_DefaultAllowlist verifies the curated default set behavior. +// TestBundledInstall_DefaultAllowlist verifies that an empty allowlist +// installs nothing (defaultBundledPackages is empty since v0.6.17). func TestBundledInstall_DefaultAllowlist(t *testing.T) { stores := newTestStores(t) ctx := context.Background() @@ -449,7 +450,7 @@ func TestBundledInstall_DefaultAllowlist(t *testing.T) { bundledDir := t.TempDir() packagesDir := t.TempDir() - // Create packages: one in default set, one not + // Create packages — neither should be installed with empty defaults buildTestPkg(t, bundledDir, map[string]any{ "id": "notes", "title": "Notes", "type": "surface", "version": "1.0.0", }) @@ -457,19 +458,17 @@ func TestBundledInstall_DefaultAllowlist(t *testing.T) { "id": "regex-tester", "title": "Regex Tester", "type": "extension", "version": "1.0.0", }) - // Empty allowlist → curated defaults + // Empty allowlist → empty default set → nothing installed InstallBundledPackages(bundledDir, packagesDir, "", stores, nil) - // "notes" is in the default set → should be installed - pkg, err := stores.Packages.Get(ctx, "notes") - if err != nil || pkg == nil { - t.Fatal("notes should be installed (in default set)") + pkg, _ := stores.Packages.Get(ctx, "notes") + if pkg != nil { + t.Fatal("notes should NOT be installed (default set is empty)") } - // "regex-tester" is NOT in the default set → should be filtered pkg, _ = stores.Packages.Get(ctx, "regex-tester") if pkg != nil { - t.Fatal("regex-tester should NOT be installed (not in default set)") + t.Fatal("regex-tester should NOT be installed (default set is empty)") } } -- 2.49.1 From 4afe18b1156a087aa6286619f542fe8218eb7f53 Mon Sep 17 00:00:00 2001 From: Jeffrey Smith Date: Wed, 1 Apr 2026 16:48:39 +0000 Subject: [PATCH 3/3] Update CHANGELOG with test fix entry Co-Authored-By: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a831df..406ef37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ environment gets the correct package set at boot. - **CI: prod deploys** — `BUNDLED_PACKAGES=notes,chat,chat-core,mermaid-renderer,schedules`. - **docker-compose.yml** — default `BUNDLED_PACKAGES` changed from empty to `*` (install all for local dev). +### Fixed + +- **TestBundledInstall_DefaultAllowlist** — updated test assertions to match v0.6.17's empty default set (was still expecting `notes` in curated defaults). + ## v0.6.17 — Bug Fixes & Welcome Logic Fixes broken UI interactions (folder creation, team member add), dropdown -- 2.49.1