From dd656eb18a443d3c62daabae2fd00a308a3feaeb Mon Sep 17 00:00:00 2001 From: ekklesia Date: Sat, 10 Oct 2026 12:20:06 -0500 Subject: [PATCH] chore: release signage 0.1.3 0.1.3 ships the external package integration validated in #13 (Pass 2): the canonical linux-x64-glibc Module Package installed and exercised end to end by CI, with bounded external runtime image processing. Only the version moves: the manifest, package.json, the server runtime, both browser artifacts, the settings payload's moduleVersion, the test fixtures, and the README status line. compatibility stays platform ^0.2.0 and moduleSdk ^0.2.0; Core 0.2.4 already satisfies it, so the range is not tightened. pnpm-lock.yaml carries no root version and is unchanged. Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- ekklesia.module.json | 2 +- package.json | 2 +- src/display/index.tsx | 2 +- src/server/runtime.ts | 4 ++-- src/ui/index.tsx | 2 +- tests/browser/support/fake-host.ts | 2 +- tests/manifest.test.ts | 6 +++--- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index f25e874..4c49b56 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Ekklesia and vendors none of its SDKs. ## Status -Version 0.1.2 is feature-complete for its declared scope, and Signage has run in production since +Version 0.1.3 is feature-complete for its declared scope, and Signage has run in production since 0.1.1. What exists today: - The module package, manifest (v8), four capabilities, six permissions, ten operator settings, and diff --git a/ekklesia.module.json b/ekklesia.module.json index 4ac9502..a09b67c 100644 --- a/ekklesia.module.json +++ b/ekklesia.module.json @@ -3,7 +3,7 @@ "id": "signage", "name": "Signage", "description": "Visual programming, timelines, synchronized channels, and display delivery for church screens.", - "version": "0.1.2", + "version": "0.1.3", "compatibility": { "platform": "^0.2.0", "moduleSdk": "^0.2.0" diff --git a/package.json b/package.json index ac4bd4f..ba4097f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ekklesia/signage", - "version": "0.1.2", + "version": "0.1.3", "private": true, "license": "AGPL-3.0-or-later", "type": "module", diff --git a/src/display/index.tsx b/src/display/index.tsx index 5d3323f..cd85dc2 100644 --- a/src/display/index.tsx +++ b/src/display/index.tsx @@ -59,7 +59,7 @@ function SignageDisplay({ context }: { readonly context: ModuleUiHostContext }): */ export default defineModuleUi({ id: "signage", - version: "0.1.2", + version: "0.1.3", styles: displayStyles, mount(container, context) { const root = createRoot(container); diff --git a/src/server/runtime.ts b/src/server/runtime.ts index a6eb798..b12e3b0 100644 --- a/src/server/runtime.ts +++ b/src/server/runtime.ts @@ -130,7 +130,7 @@ export function createSignageModuleRuntime( // Database ABI v1 executor, which `createSignageStore` binds Signage's own Drizzle adapter to. database: { abi: 1 }, id: "signage", - version: "0.1.2", + version: "0.1.3", register({ capabilities, config, http, realtime }) { const settings = readSignageSettings(config); @@ -192,7 +192,7 @@ export function createSignageModuleRuntime( // server enforces — a UI believing a stale limit would offer an upload the server refuses. return Response.json({ crossfadeMs: current.crossfadeMs, - moduleVersion: "0.1.2", + moduleVersion: "0.1.3", nativeImageDurationMs: current.nativeImageDurationMs, nativePresentation: current.nativePresentation, rendererInputVersion: SIGNAGE_SLIDE_RENDERER_INPUT_VERSION, diff --git a/src/ui/index.tsx b/src/ui/index.tsx index d55ec67..d50c9eb 100644 --- a/src/ui/index.tsx +++ b/src/ui/index.tsx @@ -15,7 +15,7 @@ import ownStyles from "./styles.css"; */ export default defineModuleUi({ id: "signage", - version: "0.1.2", + version: "0.1.3", styles: `${EKKLESIA_UI_STYLESHEET}\n${ownStyles}`, mount(container, context) { const root = createRoot(container); diff --git a/tests/browser/support/fake-host.ts b/tests/browser/support/fake-host.ts index 78e0844..0f3bf0b 100644 --- a/tests/browser/support/fake-host.ts +++ b/tests/browser/support/fake-host.ts @@ -127,7 +127,7 @@ export function createFakeHost(options: FakeHostOptions): FakeHost { /** The settings payload every screen loads first. */ export const FAKE_SETTINGS = Object.freeze({ crossfadeMs: 1000, - moduleVersion: "0.1.2", + moduleVersion: "0.1.3", nativeImageDurationMs: 7000, nativePresentation: { backgroundColor: "#000000", diff --git a/tests/manifest.test.ts b/tests/manifest.test.ts index eee2d85..60f2237 100644 --- a/tests/manifest.test.ts +++ b/tests/manifest.test.ts @@ -66,7 +66,7 @@ describe("Signage module manifest", () => { expect(manifest.manifestVersion).toBe(8); expect(manifest.id).toBe("signage"); expect(manifest.name).toBe("Signage"); - expect(manifest.version).toBe("0.1.2"); + expect(manifest.version).toBe("0.1.3"); expect(manifest.compatibility).toEqual({ moduleSdk: "^0.2.0", platform: "^0.2.0" }); }); @@ -151,7 +151,7 @@ describe("Signage module manifest", () => { describe("Signage server runtime", () => { it("exports the typed runtime definition the compiled server entrypoint publishes", async () => { // The runtime's database declaration must match the manifest's, or Core refuses to start it. - expect(moduleRuntime).toMatchObject({ database: { abi: 1 }, id: "signage", version: "0.1.2" }); + expect(moduleRuntime).toMatchObject({ database: { abi: 1 }, id: "signage", version: "0.1.3" }); }); it("registers its routes declaratively, with no database, storage, or realtime work", async () => { @@ -250,7 +250,7 @@ describe("Signage server runtime", () => { expect(response.status).toBe(200); expect(await response.json()).toEqual({ crossfadeMs: 400, - moduleVersion: "0.1.2", + moduleVersion: "0.1.3", nativeImageDurationMs: 12_000, nativePresentation: SIGNAGE_DEFAULT_SETTINGS.nativePresentation, rendererInputVersion: "1.0.0", -- 2.54.0