uberwald
fd0a7868f3
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 >
2026-05-23 21:29:58 +02:00
uberwald
61f362004e
Story 4.1: Task 1 Complete - PlayerPrivacyManager Core Logic
...
- Created src/contracts/privacy-settings.js with:
- PrivacySettings typedef
- PRIVACY_SETTINGS_DEFAULT (both flags false)
- PRIVACY_SETTING_KEYS and FEATURE_NAME_MAP constants
- createPrivacySettings() factory
- isValidPrivacySettings() validator
- validateSettingKey(), validateSettingValue(), validateFeatureName() helpers
- Created src/core/PlayerPrivacyManager.js with:
- Constructor with FoundryAdapter DI validation
- getSettings(userId) - retrieves settings from user flags
- setSetting(userId, key, value) - async, validates, persists via user.setFlag
- isOptedIn(userId, feature) - convenience method for feature checks
- getAllSettings() - aggregates all users' settings (GM view)
- onChange(callback) - subscription pattern for change events
- teardown() - cleanup
- Created tests/unit/contracts/privacy-settings.test.js - 44 tests
- Created tests/unit/core/PlayerPrivacyManager.test.js - 35 tests
- All tests passing, lint clean
- Updated sprint-status.yaml: 4-1 from ready-for-dev to in-progress
- Updated story file: Task 1 subtasks 1.1-1.8 marked complete
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-05-23 21:11:55 +02:00
uberwald
e81c05a3db
Create Story 4.1: Player Privacy Panel & Automation Opt-ins
...
- Created comprehensive story file with 8 acceptance criteria from FR-23, FR-24, FR-25
- Documented PlayerPrivacyManager core logic with DI pattern
- Designed PlayerPrivacyPanel UI component extending ApplicationV2
- Added FoundryAdapter user flag access methods specification
- Integrated Reaction Cam badge into Director's Board design
- Defined all localization strings
- Mapped file structure (new and modified files)
- Specified testing requirements (12-15 new tests)
- Updated sprint-status.yaml: 4-1 from backlog to ready-for-dev, epic-4 to in-progress
- Resolved OQ-GDPR: using user flags for v1.0
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-05-23 21:02:43 +02:00