fd0a7868f3
- 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>
161 lines
6.1 KiB
JSON
161 lines
6.1 KiB
JSON
{
|
|
"video-view-manager": {
|
|
"badge": {
|
|
"state": {
|
|
"hidden": "Hidden from table",
|
|
"self-muted": "Camera paused",
|
|
"offline": "Not connected",
|
|
"cam-lost": "Camera unavailable",
|
|
"reconnecting": "Rejoining view",
|
|
"never-connected": "Not yet connected",
|
|
"ghost": "Leaving"
|
|
}
|
|
},
|
|
"firstEncounterPanel": {
|
|
"title": "Your camera visibility changed.",
|
|
"body": "Audio continues normally.",
|
|
"gotIt": "Got it"
|
|
},
|
|
"detailsPanel": {
|
|
"close": "Close",
|
|
"audienceSuppressed": "Other players cannot see your feed",
|
|
"staleData": "Data may be outdated",
|
|
"audioReassurance": "Your audio is active for all participants."
|
|
},
|
|
"notifications": {
|
|
"gmHid": "GM hid {name}'s camera",
|
|
"gmShowed": "GM showed {name}'s camera",
|
|
"personalHidden": "GM has hidden your camera. Your portrait is shown to other Participants.",
|
|
"personalShowed": "Your camera is now visible to the table."
|
|
},
|
|
"settings": {
|
|
"notificationVerbosity": {
|
|
"label": "Notification Verbosity",
|
|
"hint": "Controls which camera-state notifications you see. 'All' shows every change; 'GM Only' shows changes only to the GM and affected participant; 'Silent' suppresses all notifications except your own camera changes.",
|
|
"choices": {
|
|
"all": "All",
|
|
"gm-only": "GM Only",
|
|
"silent": "Silent"
|
|
}
|
|
}
|
|
},
|
|
"directorsBoard": {
|
|
"title": "Director's Board",
|
|
"empty": "No participants connected.",
|
|
"openButton": "Open Director's Board",
|
|
"footer": {
|
|
"savePreset": "Save Preset…",
|
|
"loadPreset": "Load Preset…",
|
|
"exportPresets": "Export Presets…",
|
|
"importPresets": "Import Presets…"
|
|
},
|
|
"bulk": {
|
|
"showAll": "Show All",
|
|
"hideAll": "Hide All",
|
|
"undo": "Undo",
|
|
"restore": "Restore",
|
|
"spotlight": "Spotlight"
|
|
},
|
|
"shortcuts": {
|
|
"title": "Keyboard Shortcuts",
|
|
"openBoard": "Open/Close Board",
|
|
"showAll": "Show All Participants",
|
|
"hideAll": "Hide All Participants",
|
|
"spotlight": "Spotlight Focused Participant",
|
|
"openPanel": "Open Shortcut Reference"
|
|
}
|
|
},
|
|
"keybindings": {
|
|
"showAll": {
|
|
"name": "Show All Participants",
|
|
"hint": "Sets all non-ghost participant feeds to visible"
|
|
},
|
|
"hideAll": {
|
|
"name": "Hide All Participants",
|
|
"hint": "Sets all non-ghost participant feeds to hidden"
|
|
},
|
|
"spotlightParticipant": {
|
|
"name": "Spotlight Focused Participant",
|
|
"hint": "Shows the focused participant and hides all others"
|
|
}
|
|
},
|
|
"presets": {
|
|
"save": {
|
|
"saveButton": "Save",
|
|
"cancelButton": "Cancel",
|
|
"title": "Save Scene Preset",
|
|
"nameLabel": "Preset Name",
|
|
"namePlaceholder": "Enter a name for this camera layout"
|
|
},
|
|
"load": {
|
|
"loadButton": "Load",
|
|
"cancelButton": "Cancel",
|
|
"title": "Load Scene Preset",
|
|
"emptyMessage": "No presets saved yet. Use 'Save Preset' to create one."
|
|
},
|
|
"notifications": {
|
|
"saved": "Scene preset '{name}' saved.",
|
|
"applied": "Scene preset '{name}' applied.",
|
|
"scene-applied": "Scene changed: camera layout updated"
|
|
}
|
|
},
|
|
"presetExport": {
|
|
"title": "Export Scene Presets",
|
|
"description": "Download all scene presets as a JSON file that can be imported into another world.",
|
|
"scene": "Scene",
|
|
"presetCount": "Presets",
|
|
"filename": "Filename",
|
|
"export": "Export",
|
|
"cancel": "Cancel",
|
|
"exporting": "Exporting…",
|
|
"exportSuccess": "Scene presets exported successfully.",
|
|
"exportFailed": "Failed to export presets"
|
|
},
|
|
"presetImport": {
|
|
"title": "Import Scene Presets",
|
|
"description": "Upload a JSON file containing scene presets to add to this scene.",
|
|
"selectFile": "Select File",
|
|
"chooseFile": "Choose a JSON file…",
|
|
"importMode": "Import Mode",
|
|
"importModeMerge": "Merge",
|
|
"importModeReplace": "Replace",
|
|
"importModeMergeHint": "Add new presets, skip duplicates",
|
|
"importModeReplaceHint": "Delete all existing presets and import new ones",
|
|
"previewTitle": "Preview",
|
|
"previewWillImport": "Will import",
|
|
"previewWillSkip": "Will skip (already exists)",
|
|
"import": "Import",
|
|
"confirmReplace": "Replace All",
|
|
"cancel": "Cancel",
|
|
"importing": "Importing…",
|
|
"importFailed": "Failed to import presets",
|
|
"selectFileFirst": "Please select a file first",
|
|
"existingPresetsWarning": "This scene has {existingPresetCount} existing preset(s).",
|
|
"replaceConfirmation": "This will delete all {existingPresetCount} existing preset(s) and replace them with the imported ones. This cannot be undone."
|
|
}
|
|
},
|
|
"SCRYING_POOL": {
|
|
"UnknownScene": "Unknown Scene",
|
|
"firstBadgeEncounter": "First Badge Encounter",
|
|
"PrivacyPanel": {
|
|
"title": "Player Privacy Panel",
|
|
"sectionHeader": "Automation Opt-ins",
|
|
"sectionDescription": "Control which automation features can affect your camera and on-screen presence.",
|
|
"reactionCamLabel": "Reaction Cam",
|
|
"reactionCamDescription": "Automatically show your camera during key moments (combat, rolls, etc.)",
|
|
"hpReactiveCamStylingLabel": "HP-Reactive Cam Styling",
|
|
"hpReactiveCamStylingDescription": "Apply visual styling to your camera based on your character's HP",
|
|
"toggleOn": "Enabled",
|
|
"toggleOff": "Disabled",
|
|
"readOnlyNotice": "This player's privacy settings are read-only. You cannot modify another player's consent preferences.",
|
|
"savedNotification": "Privacy settings saved",
|
|
"saveError": "Failed to save privacy settings"
|
|
},
|
|
"Settings": {
|
|
"PlayerPrivacyPanel": "Player Privacy Panel",
|
|
"PlayerPrivacyPanelLabel": "Control automation effects for your camera",
|
|
"PlayerPrivacyPanelHint": "Opt in or out of Reaction Cam, HP-Reactive Cam Styling, and other automation features"
|
|
}
|
|
}
|
|
}
|