Fianlize deck strip and management
CI / ci (push) Failing after 6s

This commit is contained in:
2026-05-25 00:51:46 +02:00
parent 5dc9b3b8d4
commit 7b56d62563
12 changed files with 755 additions and 141 deletions
+32 -3
View File
@@ -94,6 +94,7 @@ Hooks.once("init", () => {
config: false,
type: Object,
default: { _version: 1, matrix: {} },
onChange: () => { stateStore?.init(); roleRenderer?.rerenderStrip(); },
});
adapter.settings.register("showGMSelfFeed", {
@@ -130,6 +131,25 @@ Hooks.once("init", () => {
hint: "When enabled, scenes with a configured camera layout will automatically apply it on activation",
});
// Dock layout — world-scoped so the GM controls the layout direction for all players
adapter.settings.register("dockLayout", {
scope: "world",
config: false,
type: String,
default: "vertical-sm",
onChange: () => roleRenderer?.rerenderStrip(),
});
// Per-user size toggle — client-scoped so each user can expand/collapse independently.
// '' = no preference (follow world dockLayout), 'sm' = force small, 'md' = force large.
adapter.settings.register("dockLayoutExpanded", {
scope: "client",
config: false,
type: String,
default: "",
onChange: () => roleRenderer?.rerenderStrip(),
});
// Construct data layer — constructors are side-effect-free
// Note: ScenePresetManager is constructed in 'ready' hook after visibilityManager is available
stateStore = new StateStore(adapter.settings);
@@ -191,6 +211,15 @@ Hooks.once("init", () => {
Hooks.once("ready", () => {
console.log("[ScryingPool] ready — module active");
// Migration: reset stale boolean dockLayoutExpanded to '' (empty string)
// Old registration used type:Boolean, saved value `false` persists in client storage
try {
const legacyVal = adapter.settings.get('dockLayoutExpanded');
if (typeof legacyVal === 'boolean') {
adapter.settings.set('dockLayoutExpanded', '').catch(() => {});
}
} catch (_) {}
// Hydrate StateStore from persisted world setting (AC-6, AC-7)
stateStore.init();
@@ -270,9 +299,9 @@ Hooks.once("ready", () => {
// Story 4.2: Pass portraitFallbackHandler for custom portrait display
roleRenderer = new RoleRenderer(stateStore, scryingPoolController, avTileAdapter, adapter, portraitFallbackHandler);
roleRenderer.init();
if (adapter.users.isGM() && game.webrtc !== null) {
roleRenderer.openStrip();
roleRenderer.openStrip();
if (adapter.users.isGM()) {
// Story 3.2: Create ConfirmationBar for preset apply feedback (GM only)
// Pass roleRenderer to access ScryingPoolStrip.stripOverlayLayer (created lazily)
confirmationBar = new ConfirmationBar(adapter, visibilityManager, socketHandler, roleRenderer);