Story 4.1: Tasks 3-6 Complete - Director's Board Integration & Settings Menu

- Task 3: Extended FoundryAdapter with user flag access methods
  - Added getFlag(userId, scope, key) method
  - Added setFlag(userId, scope, key, value) method
  - Added getFlagModule(userId, key) convenience method
  - Added setFlagModule(userId, key, value) convenience method

- Task 4: Integrated Privacy Settings with Director's Board
  - Updated participant-card.hbs to show Reaction Cam badge
  - Modified boardUtils.js to pass playerPrivacyManager through context
  - Updated DirectorsBoard to accept and pass playerPrivacyManager
  - Added CSS styles for Reaction Cam badge (SP accent color)

- Task 5: Registered PlayerPrivacyPanel in module settings
  - Added settings menu registration in module.js Hooks.once('ready')
  - Available to all users (restricted: false)
  - Uses localized labels and hints

- Task 6: Added all localization strings
  - Added SCRYING_POOL.PrivacyPanel.* strings for panel UI
  - Added SCRYING_POOL.Settings.* strings for settings menu

- Updated story file with task completion status

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-05-23 21:29:58 +02:00
parent 61f362004e
commit fd0a7868f3
13 changed files with 1049 additions and 47 deletions
+4 -2
View File
@@ -58,14 +58,16 @@ export class DirectorsBoard extends _AppBase {
* @param {object} controller
* @param {object} adapter
* @param {import('../core/ScenePresetManager.js').ScenePresetManager} scenePresetManager
* @param {import('../../core/PlayerPrivacyManager.js').PlayerPrivacyManager} playerPrivacyManager
* @param {object} [options]
*/
constructor(stateStore, controller, adapter, scenePresetManager, options = {}) {
constructor(stateStore, controller, adapter, scenePresetManager, playerPrivacyManager, options = {}) {
super(options);
this._stateStore = stateStore;
this._controller = controller;
this._adapter = adapter;
this._scenePresetManager = scenePresetManager;
this._playerPrivacyManager = playerPrivacyManager;
this._hookId = null;
/** @type {Map<string, string>|null} Pre-bulk-action snapshot for single-step undo */
this._undoSnapshot = null;
@@ -337,7 +339,7 @@ export class DirectorsBoard extends _AppBase {
/** @inheritdoc */
async _prepareContext() {
const base = buildBoardContext(this._stateStore, this._controller, this._adapter);
const base = buildBoardContext(this._stateStore, this._controller, this._adapter, this._playerPrivacyManager);
const presetCount = this._scenePresetManager?.list?.().length ?? 0;
// Get auto-apply config for current scene (Story 3.2)