chore: release signage 0.1.2 #9

Merged
Zayin_Admin merged 1 commits from chore/release-0.1.2 into main 2026-10-06 03:51:14 +00:00
8 changed files with 16 additions and 15 deletions
Showing only changes of commit 855b5f9f54 - Show all commits
+6 -5
View File
@@ -16,7 +16,8 @@ Ekklesia and vendors none of its SDKs.
## Status
Version 0.1.1 is feature-complete for its declared scope and unreleased. What exists today:
Version 0.1.2 is feature-complete for its declared scope, and Signage has run in production since
0.1.1. What exists today:
- The module package, manifest (v7), four capabilities, six permissions, ten operator settings, and
one logical storage bucket.
@@ -34,10 +35,10 @@ Version 0.1.1 is feature-complete for its declared scope and unreleased. What ex
renderers mounted as browser contributions, the built-in "Content unavailable" slate, deliberate
blackout, and offline continuation from this display's own persisted state.
Nothing here is deployed, and no cutover from the legacy Announcements container has happened or is
planned by this repository. Video, audio, MQTT, Home Assistant, Companion, and a notification outbox
are out of scope; so is any content module — Signage ships with no announcements, scripture, or
trivia, and cannot render any until one is installed.
No cutover from the legacy Announcements container has happened or is planned by this repository.
Video, audio, MQTT, Home Assistant, Companion, and a notification outbox are out of scope; so is
any content module — Signage ships with no announcements, scripture, or trivia, and cannot render
any until one is installed.
### Offline cold start is not yet possible
+1 -1
View File
@@ -3,7 +3,7 @@
"id": "signage",
"name": "Signage",
"description": "Visual programming, timelines, synchronized channels, and display delivery for church screens.",
"version": "0.1.1",
"version": "0.1.2",
"compatibility": {
"platform": "^0.1.0",
"moduleSdk": "^0.1.0"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ekklesia/signage",
"version": "0.1.1",
"version": "0.1.2",
"private": true,
"type": "module",
"description": "Ekklesia's visual programming, timeline, synchronization, and display-delivery module.",
+1 -1
View File
@@ -59,7 +59,7 @@ function SignageDisplay({ context }: { readonly context: ModuleUiHostContext }):
*/
export default defineModuleUi({
id: "signage",
version: "0.1.1",
version: "0.1.2",
styles: displayStyles,
mount(container, context) {
const root = createRoot(container);
+2 -2
View File
@@ -127,7 +127,7 @@ export function createSignageModuleRuntime(
const definition = defineModuleRuntime({
id: "signage",
version: "0.1.1",
version: "0.1.2",
register({ capabilities, config, http, realtime }) {
const settings = readSignageSettings(config);
@@ -189,7 +189,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.1",
moduleVersion: "0.1.2",
nativeImageDurationMs: current.nativeImageDurationMs,
nativePresentation: current.nativePresentation,
rendererInputVersion: SIGNAGE_SLIDE_RENDERER_INPUT_VERSION,
+1 -1
View File
@@ -15,7 +15,7 @@ import ownStyles from "./styles.css";
*/
export default defineModuleUi({
id: "signage",
version: "0.1.1",
version: "0.1.2",
styles: `${EKKLESIA_UI_STYLESHEET}\n${ownStyles}`,
mount(container, context) {
const root = createRoot(container);
+1 -1
View File
@@ -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.1",
moduleVersion: "0.1.2",
nativeImageDurationMs: 7000,
nativePresentation: {
backgroundColor: "#000000",
+3 -3
View File
@@ -66,7 +66,7 @@ describe("Signage module manifest", () => {
expect(manifest.manifestVersion).toBe(7);
expect(manifest.id).toBe("signage");
expect(manifest.name).toBe("Signage");
expect(manifest.version).toBe("0.1.1");
expect(manifest.version).toBe("0.1.2");
expect(manifest.compatibility).toEqual({ moduleSdk: "^0.1.0", platform: "^0.1.0" });
});
@@ -142,7 +142,7 @@ describe("Signage module manifest", () => {
describe("Signage server runtime", () => {
it("exports the typed runtime definition the compiled server entrypoint publishes", async () => {
expect(moduleRuntime).toMatchObject({ id: "signage", version: "0.1.1" });
expect(moduleRuntime).toMatchObject({ id: "signage", version: "0.1.2" });
});
it("registers its routes declaratively, with no database, storage, or realtime work", async () => {
@@ -241,7 +241,7 @@ describe("Signage server runtime", () => {
expect(response.status).toBe(200);
expect(await response.json()).toEqual({
crossfadeMs: 400,
moduleVersion: "0.1.1",
moduleVersion: "0.1.2",
nativeImageDurationMs: 12_000,
nativePresentation: SIGNAGE_DEFAULT_SETTINGS.nativePresentation,
rendererInputVersion: "1.0.0",