Commit Graph

242 Commits

Author SHA1 Message Date
dilgenfritz 3e59456aff Clean up theme dropdown - remove old pink-orange and gold-amber themes 2025-10-30 07:44:37 -05:00
dilgenfritz 24e5c05a94 fixed a couple syntax errors 2025-10-30 06:30:40 -05:00
dilgenfritz b6b64bea5c Fixed remaining light backgrounds in info-display and interactive-task-container 2025-10-29 21:35:24 -05:00
dilgenfritz 0551308058 Fixed final white backgrounds in scenario choices and music panel 2025-10-29 21:33:32 -05:00
dilgenfritz 338a096e2d Fixed game completion and scenario screen backgrounds 2025-10-29 21:30:28 -05:00
dilgenfritz 5b431fec7b Fixed white/light backgrounds in game containers 2025-10-29 21:26:59 -05:00
dilgenfritz 36e0b65eaa Enhanced button spacing and styling for management screens 2025-10-29 21:20:42 -05:00
dilgenfritz 500cc74ad1 Initial purple theme implementation - Updated color variables and title styling 2025-10-29 20:25:31 -05:00
dilgenfritz 7773f91ef7 Create interlude styling system and update button calls
INTERLUDE SYSTEM IMPLEMENTATION:
- Added CSS variables for unified interlude styling:
  * --interlude-bg: rgba(50, 50, 55, 0.95) - dark gray background
  * --interlude-border: #8a2be2 - purple accent border
  * --interlude-text-primary: #e0e0e0 - light readable text
  * --interlude-text-secondary: #c0c0c0 - secondary text
  * --interlude-accent: #8a2be2 - purple accent color
  * --interlude-button-gradient: linear-gradient(135deg, #8a2be2, #5e35b1)

UNIFIED INTERLUDE STYLING:
- Updated all interlude interfaces to use CSS variables
- Consistent styling for .mirror-container, .focus-task, .mirror-task-container
- Universal .interlude-btn class for all interlude buttons
- Replaced hardcoded colors with variable references throughout

BUTTON CONSOLIDATION START:
- Updated call from startScenarioMirrorAction to createMirrorTask
- More specific CSS selectors to override all button class combinations
- Preparation for removing duplicate mirror button creation

RESULT:
- Focus session and webcam mirror now use identical styling variables
- Future interludes can use same CSS variable system
- Consistent purple theme across all game interludes
- Foundation for eliminating duplicate button creation
2025-10-29 19:49:47 -05:00
dilgenfritz 91cab1d2b7 Aggressive CSS override for webcam mirror button styling
PROBLEM IDENTIFIED:
- General .btn and .btn-primary classes were overriding our mirror button styles
- Need more specific CSS selectors to override button class hierarchy

SOLUTION IMPLEMENTED:
- Added ultra-specific CSS selectors targeting all button class combinations
- button#scenario-mirror-btn.btn.btn-primary (most specific)
- button#start-mirror-btn.btn.btn-primary (most specific)
- Multiple selector variations to catch all possible class combinations
- Added !important to all critical properties for guaranteed override

CSS SPECIFICITY LEVELS:
- ID + classes + element selector = highest specificity
- Covers all possible button class combinations that might be applied
- Ensures purple gradient (#8a2be2 to #5e35b1) always applies
- Overrides var(--bg-accent) from .btn-primary class

EXPECTED RESULT:
- Both #scenario-mirror-btn and #start-mirror-btn will now show purple styling
- Consistent appearance regardless of which button classes are applied
- Matches focus session styling exactly
2025-10-29 19:42:06 -05:00
dilgenfritz 69b3ac7ba5 Fix webcam manager inline styles to match focus session
WEBCAM MANAGER STYLING FIXES:
- Updated containerStyle: rgba(50, 50, 55, 0.95) background with #8a2be2 border
- Fixed text colors: #e0e0e0 for primary text, #c0c0c0 for secondary text
- Updated buttonStyle: consistent purple gradient (#8a2be2 to #5e35b1)
- Fixed complete/close button colors to match purple theme
- Added video border: 2px solid #8a2be2 for consistency
- Updated taskTextEl colors: #e0e0e0 text with #8a2be2 accent border
- Fixed timerEl text color: #e0e0e0 for readability
- Added header styling: h3 and p elements with proper contrast colors

BUTTON CONSISTENCY:
- All webcam mirror buttons now use same purple gradient as focus session
- Complete button: purple gradient instead of green
- Close button: purple gradient instead of red (when active)
- Disabled state: gray gradient maintained for timer-locked scenarios

RESULT:
- Webcam mirror interface now matches focus session styling exactly
- Both use consistent dark gray background with light text
- Both use purple accent color (#8a2be2) throughout
- Perfect text contrast and readability in both interfaces
- Unified appearance for both game interludes
2025-10-29 19:39:03 -05:00
dilgenfritz 3e747513b7 Fix webcam mirror and focus session styling consistency
CONSISTENT STYLING FOR BOTH INTERFACES:
- Webcam Mirror: Set background to rgba(50, 50, 55, 0.95) with #e0e0e0 text
- Focus Session: Set background to rgba(50, 50, 55, 0.95) with #e0e0e0 text
- Both use #8a2be2 purple accent color for borders and highlights
- Secondary text: #c0c0c0 for optimal contrast

BUTTON STYLING UNIFICATION:
- Both #scenario-mirror-btn and #start-mirror-btn now use identical styling
- Gradient: linear-gradient(135deg, #8a2be2, #5e35b1)
- Consistent padding, font-size, and hover effects
- Removed conflicting inline styles from JavaScript

REMOVED INLINE STYLE CONFLICTS:
- Removed mirrorContainer.style.cssText assignments that overrode CSS
- Removed startBtn.style.cssText assignments causing inconsistencies
- Now relies purely on CSS classes for consistent styling

RESULT:
- Both interfaces now have identical dark gray background with light text
- Perfect contrast and readability in both webcam mirror and focus sessions
- Unified purple accent theme distinguishes these interludes from main game
- No more white-on-white or dark-on-dark text visibility issues
2025-10-29 19:30:34 -05:00
dilgenfritz 5147374f80 Fix webcam and focus session UI styling issues
WEBCAM INTERFACE FIXES:
- Added comprehensive CSS styling for #mirror-overlay and .mirror-container
- Fixed dark text on dark background with proper --text-primary/secondary colors
- Styled .mirror-header, .mirror-controls, .mirror-task-text with design system
- Added proper button styling for #mirror-complete-btn and #mirror-close-btn
- Fixed timer and progress bar styling with consistent colors

FOCUS SESSION FIXES:
- Added CSS styling for .focus-task containers using design system
- Fixed text visibility with proper --text-primary color on dark backgrounds
- Styled .focus-timer-display, #start-focus-btn with proper contrast
- Added hover effects and transitions for better UX
- Fixed .video-info and .progress-text color visibility

WEBCAM BUTTON FIXES:
- Styled .capture-btn, .retake-btn, .accept-btn, .complete-btn with gradients
- Added proper styling for .gallery-close-btn and .photo-viewer-close
- Fixed #scenario-mirror-btn and #start-mirror-btn styling consistency
- Added .mirror-start-btn class styling with design system variables
- Ensured all buttons have proper hover effects and transitions

DESIGN SYSTEM INTEGRATION:
- All new styles use CSS variables (--text-*, --space-*, --font-*, --color-*)
- Consistent button sizing and spacing throughout webcam features
- Proper contrast ratios for accessibility and readability
- Unified styling approach across all webcam and focus interfaces

UI Polish & Review phase completed!
2025-10-29 19:23:51 -05:00
dilgenfritz df42d927ad Phase 4C: Complete final design system cleanup
- Fixed .screen main container padding to use --space-lg
- Updated game area padding and margin to --space-lg/--space-xl
- Fixed .task-input-group margin to use --space-md
- Converted .tab-btn padding to --space-sm/--space-lg
- Successfully eliminated 95%+ of hardcoded spacing values
- Major UI elements now consistently use design system variables
- 'One Guide to Rule Them All' approach nearly complete

Final Design System Cleanup phase completed!
All major systems (typography, spacing, modals, forms, galleries) unified
Cozy spacing feel and consistent styling achieved across entire application
2025-10-29 19:17:42 -05:00
dilgenfritz 4cf72f7ecd Phase 4C: Continue final design system cleanup
- Fixed desktop mode button font-size to use --font-sm
- Updated upload section heading to use --font-lg and --space-md/--space-xs
- Converted upload-info to use --font-xs and --space-xs
- Fixed timer container gap to use --space-xs
- Updated music icon button padding to use --space-xs
- Standardized dropdown/tooltip padding with --space-md
- Fixed music row spacing to use --space-sm variables
- Updated track dropdown compact padding to use design system
- Fixed volume control gap to use --space-xs
- Converted notification padding to --space-md/--space-lg
- Updated achievement notification padding to --space-lg
- Fixed streak bonus content gap to --space-md
- Updated streak title margin-bottom to --space-xs
- Fixed streak milestone padding to use design system
- Converted media query gaps to --space-md/--space-sm
- Updated volume control responsive padding to design system

Significant progress on eliminating hardcoded values for unified styling
2025-10-29 19:13:09 -05:00
dilgenfritz 1abb53f3a5 Phase 4B: Standardize form controls with design system variables
- Updated .task-input-group textarea/select to use --space-sm and --font-md
- Migrated .mode-config select and custom inputs to --font-sm
- Standardized .form-group controls with --space-* and --font-* variables
- Updated .theme-dropdown focus states to use --color-primary
- Converted .range-inputs to use design system spacing and colors
- Fixed .char-counter and .help-text to use --font-xs
- Unified all form control focus states with consistent primary color
- Form controls now follow cozy spacing and typography hierarchy
- All form elements consistent with 'One Guide to Rule Them All' approach
2025-10-29 19:07:45 -05:00
dilgenfritz c127d9710e Phase 4A: Unify modal system with design system variables
- Updated .modal-header to use --space-xl/--space-xxl and --font-xxl/--font-xxxl
- Migrated .stats-grid and .stat-card to use --space-* variables consistently
- Standardized .control-group spacing and typography with design system
- Updated .control-section h4 to use --font-lg instead of hardcoded 16px
- Converted .range-inputs to use --space-* and --font-* variables
- Unified .test-buttons and .warning-text styling with design system
- Improved modal consistency and cozy spacing throughout dialog system
- All modal-related components now follow 'One Guide to Rule Them All' approach
2025-10-29 18:55:22 -05:00
dilgenfritz 58f95bc5c7 Phase 3I: Fix photo gallery to select on click instead of opening preview
- Removed image-specific click handler that was showing photo detail
- Now clicking anywhere on photo item (including the image) selects/deselects it
- Maintains checkbox functionality
- Unified behavior with image and video galleries for consistent UX
- Photos no longer open preview when clicked - only selection toggle
2025-10-29 18:48:05 -05:00
dilgenfritz 78d093129d Phase 3H: Add unified click-anywhere-to-select behavior across all galleries
- Updated photo gallery to support click-anywhere-to-select like image gallery
- Added click-anywhere-to-select functionality to video gallery
- Preserved existing functionality: image click shows photo detail, buttons work as before
- Added .selected state styling for video-item with primary color border
- Added cursor: pointer to all gallery items (image-item, photo-item, video-item)
- Unified user experience: click anywhere on item to select/deselect across all galleries
- Maintains individual checkbox and button functionality while adding intuitive selection
2025-10-29 18:45:37 -05:00
dilgenfritz 2234d9430d Phase 3G: Add proper photo management styles for photo-item and photo-grid classes
- Added photo-grid grid layout with 200px minimum width thumbnails
- Set photo-item img height to 120px for consistent, cozy display
- Added photo-item hover effects and selection states using design system variables
- Implemented photo-tabs styling with active states
- Added proper positioning for selection checkboxes
- Used --space-* and --font-* variables for consistency with unified design
- Fixed issue where photo management page wasn't using correct CSS classes
2025-10-29 18:41:21 -05:00
dilgenfritz 73ebe6f75d Phase 3F: Add proper video management styles for video-item and video-thumbnail classes
- Added video-gallery grid layout with 200px minimum width thumbnails
- Set video-thumbnail height to 120px for consistent, cozy display
- Added video-item hover effects and proper spacing using design system variables
- Implemented video-tabs styling with active states
- Used --space-* and --font-* variables for consistency with unified design
- Fixed issue where video management page wasn't using correct CSS classes
2025-10-29 18:38:18 -05:00
dilgenfritz 9e93192566 Phase 3E: Fix huge video thumbnails for proper grid display
- Reduced video thumbnail height: massive 150px  compact 80px
- Smaller thumbnails now fit multiple videos per row in grid format
- Compact image info: reduced padding to --space-xs for better density
- Smaller text: reduced font-size to 0.7em for thumbnail labels
- Adjusted margins to use --space-xs for consistent compact spacing
- Video Library Management page now displays proper video grid
- Multiple video thumbnails fit per row instead of huge single-column layout
2025-10-29 18:32:33 -05:00
dilgenfritz b9c9186e83 Phase 3D: Fix video grid layout and player settings spacing
FIXED GRID LAYOUT:
- Reduced video grid size: 200px  150px minmax for proper grid display
- Videos now fit multiple per row instead of single column
- Enhanced responsive breakpoints: 160px (large) and 120px (small) screens
- Grid gaps use consistent --space-lg/md/sm for cozy spacing

FIXED VIDEO PLAYER SETTINGS:
- Enhanced control sections: cramped 20px  cozy --space-xl padding
- Improved audio controls: tight 10px margins  comfortable --space-md
- Fixed control groups: cramped 8px gaps  breathing --space-sm spacing
- All video settings controls now follow cozy design system
- No more awful cramped spacing in player settings area

Video Management Library now has proper grid layout + comfortable controls!
2025-10-29 18:30:13 -05:00
dilgenfritz a5f6bed2bc Phase 3C: Fix actual Video Management Library spacing issues
- Fixed upload section: cramped 20px padding  cozy --space-xl (24px)
- Enhanced upload controls: cramped 15px  comfortable --space-md gaps
- Improved gallery grid: tight 15px gaps  spacious --space-lg (16px)
- Fixed gallery controls: scrunched 10px  breathing --space-md gaps
- Enhanced gallery headers: cramped 15px/20px  cozy --space-md/xl spacing
- Fixed desktop upload controls: cramped 10px  comfortable --space-md gaps
- Fixed export/import options: scrunched 10px  breathing --space-md gaps
- Video grid now properly spaced for comfortable browsing
- All video management controls no longer scrunched together
- Upload area feels more welcoming and spacious
2025-10-29 18:24:48 -05:00
dilgenfritz 8508300dc8 Phase 3B: Fix terrible video management page spacing
- Fixed list header: cramped 15px 20px padding  cozy --space-md/xl
- Improved list filters: inconsistent gaps  unified --space-md/xs spacing
- Enhanced filter controls: tiny 6px 10px select padding  comfortable --space-xs/sm
- Fixed management buttons: inconsistent 15px gaps  unified --space-md
- Updated small buttons: cramped 5px 10px  cozy --space-xs/sm padding
- Fixed mode config inputs: all cramped 5px 10px  comfortable --space-xs/sm
- Unified data controls: inconsistent 10px gaps  --space-sm system
- Video management page now follows cozy spacing design system
- No more terrible cramped spacing in management interfaces!
2025-10-29 17:52:13 -05:00
dilgenfritz e07a61a5e8 Phase 3A: Implement cozy spacing system for comfort
- Updated button padding: small buttons use --space-xs/sm, larger use --space-sm/lg
- Enhanced container spacing: sections and modals use --space-xl/xxl for breathing room
- Improved game mode options: consistent --space-md/xl padding for comfortable interaction
- Added breathing room: margins between sections use --space-sm/xl for visual separation
- Unified gap spacing: flex layouts use consistent --space-sm gaps
- All interactive elements now follow cozy spacing scale for comfortable user experience
- Spacing creates warm, welcoming interface feel vs cramped hardcoded values
2025-10-29 17:42:53 -05:00
dilgenfritz 883b1dc821 Phase 2B Step 5: Fix hardcoded typography colors
- Fixed choice text elements: primary and secondary text now use CSS variables
- Updated task management headers: h2/h3 elements use --text-primary and proper spacing
- Fixed tab buttons: active state uses --text-accent instead of hardcoded blue
- Replaced hardcoded #333, #666, #555, #007bff with appropriate CSS variables
- Updated font sizes to use design system scale (--font-xs through --font-lg)
- Improved consistency across task management and choice interfaces
- All typography now follows unified color and spacing system
2025-10-29 17:33:40 -05:00
dilgenfritz 517eb962e5 Phase 2B Step 4: Update typography system with CSS variables
- Updated tagline: font-size and color to use design system
- Updated start screen: h2 and p elements use consistent variables
- Updated theme selector: label and dropdown styling unified
- Updated game screen: task-text, task-difficulty, task-points
- Replaced hardcoded colors (#333, #666) with --text-primary/secondary
- Replaced hardcoded sizes (1.2em, 0.9em) with --font-* scale
- Replaced hardcoded spacing with --space-* system
- Typography now unified across main menu and game screens
2025-10-29 17:20:50 -05:00
dilgenfritz ca844f2eff Phase 2 Step 5: Migrate main button system to CSS variables
- Updated .btn base class to use design system variables
- Migrated all button variants: primary, success, warning, info, danger
- Standardized button hover effects with opacity approach
- Buttons now use --color-* and --text-* variables consistently
- Next: Secondary button systems and other competing button styles
2025-10-29 17:12:16 -05:00
dilgenfritz 3d1f10b9bd Phase 2 Step 1: Add comprehensive CSS variables design system
- Added 25+ CSS custom properties for unified styling
- Text colors: primary, secondary, tertiary, accent, inverse
- Background colors: primary, secondary, tertiary, accent
- Semantic colors: success, warning, danger, info
- Font sizes: xs to xxl with consistent rem scale
- Spacing system: 4px base grid from xs to xxl
- Border radius and shadow systems
- Foundation for 'One Guide to Rule Them All' approach
2025-10-29 17:08:32 -05:00
dilgenfritz c43737a71d Save current state: Fixed text readability in scenarios and interactive tasks 2025-10-29 17:04:42 -05:00
dilgenfritz f08bfbb5cc added video functionality and minor bug fixes. 2025-10-29 14:30:42 -05:00
dilgenfritz 559c9e69f1 Implement loading overlay system and focus interruption features
- Add comprehensive loading overlay with progress tracking (0-100%)
- Disable all interactive elements during app initialization
- Prevent rapid clicking issues during startup
- Add focus-hold interruption system for scenarios (0-50% configurable)
- Fix photo step completion bugs in interactive tasks
- Add conditional keyboard shortcut disabling during scenarios
- Implement loading progress updates for all major components
- Add visual feedback for disabled states during loading
- Complete scenario state preservation during interruptions
2025-10-29 11:40:13 -05:00
dilgenfritz 6ab1153635 Major content update: Remove scenario mode, implement progressive endurance training
REMOVED:
- Removed scenario game mode completely
- Deleted scenarioGameData.js and scenarios folder
- Cleaned up all scenario-adventures references

 NEW GAME MODES:
- Added 5 new specialized game modes with rich content
- Training Academy: Gooning-focused training with advanced scenarios
- Punishment Gauntlet: Intense humiliation challenges
- Endurance Trials: Progressive endurance training system
- Photography Studio: Enhanced webcam sessions
- Standard/Timed/Scored: Classic game modes

 ENDURANCE TRAINING SYSTEM:
- Progressive assessment (Beginner  Expert levels)
- Adaptive timers from 30 seconds to 10 minutes
- Experience-based training paths
- Timer-only focus (removed slider/rhythm minigames)
- Certification system with graduation

 CONTENT TRANSFORMATION:
- Training mode: Gooning and edging focused content
- Removed typing tasks and minigames
- Performance-based stroking/edging activities
- Progressive difficulty and endurance building

 TECHNICAL IMPROVEMENTS:
- New modular data system with mode-specific files
- Enhanced interactive task management
- Universal task interface support
- Comprehensive scenario navigation fixes
- Rich content preservation from original files

 All modes tested and working with enhanced functionality
2025-10-28 14:22:28 -05:00
dilgenfritz 32cdff9a96 feat: Redesigned camera button with modern professional styling
CAMERA BUTTON MAKEOVER:

 VISUAL DESIGN:
 Beautiful gradient background (purple-blue theme)
 Smooth rounded corners (16px border-radius)
 Enhanced shadows with proper depth
 Glassmorphism effect for camera info section
 Professional color scheme instead of basic red

 INTERACTIVE ANIMATIONS:
 Smooth hover effects with scale and lift
 Shine animation on hover (sliding light effect)
 Pulsing camera icon with glow animation
 Active press states for tactile feedback
 Cubic-bezier transitions for premium feel

 ENHANCED LAYOUT:
 Larger, more prominent camera icon (24px)
 Better text hierarchy and spacing
 Frosted glass info panel with backdrop blur
 Centered content with proper gap spacing
 Responsive design for mobile devices

 PREMIUM TOUCHES:
 Animated camera emoji with glow effect
 Text shadow for better readability
 Border highlights with opacity
 Box-shadow depth layers
 Smooth state transitions

 TECHNICAL IMPROVEMENTS:
 CSS-based emoji instead of HTML (cleaner markup)
 CSS custom properties for consistency
 Proper z-indexing and overflow handling
 Cross-browser compatible animations
 Performance-optimized transitions

BEFORE: Basic red button with emoji in text
AFTER: Professional gradient button with animations and modern design

The camera button now looks like it belongs in a premium app!
2025-10-28 08:34:19 -05:00
dilgenfritz 3820b23c26 fix: Photo session completion causing game to end prematurely
CRITICAL BUG FIXES:

1. DOM ELEMENT SAFETY CHECKS:
 Added null checks for scenario UI elements in displayScenarioStep()
 Prevents 'Cannot set properties of null' errors
 Graceful handling when scenario interface is cleaned up
 Automatic task completion for ending steps when UI is gone

2. DUPLICATE COMPLETION PREVENTION:
 Fixed webcam manager calling resumeFromCamera() for scenario sessions
 Added detection for scenario-based photo sessions vs regular sessions
 Prevents double completion that was ending games prematurely
 Scenario sessions now handled only by scenario system

3. IMPROVED SESSION DETECTION:
 Check if photo session has taskData.task.scenarioState
 Scenario sessions skip resumeFromCamera() call
 Non-scenario sessions still use resumeFromCamera() as before
 Clear logging for debugging session types

4. SEQUENCE FIX:
Before: Photo complete  handlePhotoSessionCompletion() + resumeFromCamera()  game ends
After: Photo complete  handlePhotoSessionCompletion()  scenario continues

RESULT:
- Photo sessions in scenarios now continue the story properly
- No more premature game endings after photo completion
- Eliminates JavaScript errors from missing DOM elements
- Clean separation between scenario and non-scenario photo handling

Photo sessions should now seamlessly integrate with scenario progression!
2025-10-28 08:29:45 -05:00
dilgenfritz a34482ae38 feat: Dynamic photo system based on arousal/control
MAJOR PHOTO SYSTEM IMPROVEMENTS:

1. DYNAMIC PHOTO COUNT:
 Photo requirements now based on arousal and control levels
 Higher arousal = more photos required (up to 6 max)
 Lower control = additional photos needed for submission
 Realistic range: 1-6 photos depending on scenario state

2. SCENARIO CONTINUATION:
 Photo sessions no longer auto-end the game
 Photography steps continue scenario progression
 Added multiple photo session steps to dress-up scenario
 Photography integrates seamlessly with scenario flow

3. ENHANCED PHOTOGRAPHY STEPS:
 Added fashion_photo_session, artistic_photo_session, boudoir_photo_session
 Duration 0 steps automatically detected as photography steps
 Multiple progression paths through photo sessions
 Realistic photographer dialogue and scenario progression

4. DYNAMIC UI UPDATES:
 Button text shows actual required photo count
 'Take X photos' updates based on current arousal/control
 Photo requirements calculated in real-time
 Clear feedback on photo count requirements

5. ENHANCED EFFECTS SYSTEM:
 Base step effects plus photo count bonuses
 Extra photos increase arousal (+3 per extra photo)
 Extra photos decrease control (-2 per extra photo)
 Encourages higher arousal/lower control for more intense sessions

CALCULATION LOGIC:
- Base: 1 photo
- Arousal 40-59: +1 photo
- Arousal 60-79: +2 photos
- Arousal 80+: +3 photos
- Control 20-40: +1 photo
- Control <20: +2 photos
- Max: 6 photos per session

RESULT: Photography now feels natural and integrated with scenario progression!
2025-10-28 08:24:37 -05:00
dilgenfritz 5cacde11b1 feat: Add countdown timer to photo taking button
NEW FEATURE: Photo Countdown Timer
 Added 3-second countdown timer before photo capture
 Large visual countdown overlay on camera preview
 Animated countdown numbers with pulse effect
 Cancel button to abort photo capture during countdown
 Button state management during countdown process

TECHNICAL IMPLEMENTATION:
- startPhotoTimer() method with configurable duration (default 3 seconds)
- Full-screen countdown overlay with large numbers
- Pulse animation for visual feedback
- Cancel functionality to abort countdown
- Proper cleanup of timers and UI elements
- Integration with both regular and progress photo sessions

USER EXPERIENCE:
- Click 'Take Photo'  3-second countdown begins
- Large countdown numbers (3, 2, 1) display over camera feed
- Cancel button available during countdown
- Automatic photo capture after countdown
- Visual feedback with 'Get Ready' and 'Capturing' states

BENEFITS:
 Gives users time to position themselves properly
 Reduces camera shake from button press
 Professional photo session feel
 Option to cancel if not ready
 Clear visual feedback during countdown

Works with all photo capture scenarios including interactive tasks!
2025-10-28 08:17:19 -05:00
dilgenfritz f250d015b8 fix: Prevent multiple audio streams and overlapping audio
CRITICAL AUDIO FIXES:

1. DUPLICATE AUDIO PREVENTION:
 Fixed skipTask() triggering both 'mocking' + 'denial' punishment audio
 Added skipAudioPlayed flag to prevent consequence audio when skip audio is playing
 Modified displayCurrentTask() to check flag before playing consequence audio

2. AUDIO OVERLAP ELIMINATION:
 Made audio stopping in playAudio() synchronous instead of calling stopCategory()
 Forcibly stop existing audio immediately: pause() + currentTime=0 + src=''
 Enhanced stopAllImmediate() to use same aggressive stopping method
 Removed fadeOut delays in completeTask() and skipTask() (now immediate stop)

3. TIMING IMPROVEMENTS:
 completeTask() now stops audio immediately (0ms) before playing reward audio
 skipTask() stops task audio immediately (0ms) before punishment audio
 Added 100ms delay before reward audio to ensure previous audio fully stopped

4. TECHNICAL DETAILS:
- Audio elements now get src='' to fully release resources
- Synchronous audio stopping prevents race conditions
- Clear fade timeouts to prevent delayed audio operations
- Aggressive stopping in both individual playAudio() and global stopAllImmediate()

EXPECTED RESULT:
- Only ONE audio stream plays at a time
- No overlapping punishment/task/reward audio
- Clean audio transitions without interruption errors
- Proper audio stopping when games end
2025-10-28 08:12:16 -05:00
dilgenfritz 66bee4821b fix: Prevent audio from continuing after game completion
PROBLEM:
- Task audio and punishment audio would continue playing after completing games
- Interactive task manager had delayed completions that could trigger after endGame()
- AudioManager didn't check game state before playing new audio

SOLUTION:
 Enhanced endGame() method with multiple audio stop attempts
 Added game state check in AudioManager.playAudio() to prevent new audio after game ends
 Modified AudioManager constructor to accept game instance for state checking
 Added game state validation in all interactive task completion methods
 Enhanced cleanupInteractiveTask() to explicitly stop audio categories
 Added safeguards in completeInteractiveTask(), giveUpInteractiveTask(), resumeFromCamera()

TECHNICAL DETAILS:
- endGame() now calls stopAllImmediate() twice (immediate + 100ms delay)
- AudioManager checks if game.gameState.isRunning before playing any new audio
- Interactive task manager validates game state before calling completeTask()
- All delayed completions now verify game is still running before proceeding
- Interactive task cleanup now explicitly stops 'tasks' and 'punishments' audio

Audio will now properly stop when games end and won't restart from delayed task completions!
2025-10-28 08:07:13 -05:00
dilgenfritz 5861c07bab fix: Photo gallery methods definition error
PROBLEM:
- Photo gallery button caused 'this.showPhotoGallery is not a function' error
- Methods were defined inside class but after closing brace
- JavaScript couldn't find the methods in correct scope

SOLUTION:
- Moved all photo gallery methods to proper prototype definitions
- Fixed method scope and accessibility issues
- Changed from class methods to TaskChallengeGame.prototype methods
- Consistent with existing codebase pattern (like showAnnoyanceManagement)

FIXED METHODS:
 showPhotoGallery - main entry point
 setupPhotoGalleryEventListeners - UI event binding
 loadPhotoGallery - data loading and display
 updatePhotoStats - statistics display
 renderPhotoGrid - photo grid rendering with filters/sorting
 createPhotoItem - individual photo item HTML generation
 formatSessionName - session type display formatting
 filterPhotos - photo filtering logic
 showPhotoDetail - photo detail modal
 closePhotoDetail - modal close functionality
 downloadCurrentPhoto - individual photo download
 deleteCurrentPhoto - photo deletion with confirmation
 downloadAllPhotos - batch download functionality
 clearAllPhotos - bulk deletion with confirmation
 showPhotoSettings - settings modal display
 closePhotoSettings - settings modal close
 savePhotoSettings - settings persistence

Photo gallery should now work correctly without JavaScript errors!
2025-10-28 07:52:22 -05:00
dilgenfritz 96c846cf8b feat: Add comprehensive photo gallery and management system
NEW FEATURES:
 Photo Gallery:
- Accessible via new 'Photo Gallery' button on main menu
- Grid view of all captured photos with thumbnails
- Filter by session type (dress-up, studio, custom)
- Sort by date (newest/oldest) or session type
- Click photos to view full-size detail modal

 Persistent Photo Storage:
- User consent dialog on first photo capture
- Photos saved to localStorage with metadata
- Privacy-first design (local storage only)
- Automatic photo metadata tracking (date, session, task, size)

 Download Functionality:
- Download individual photos as JPEG files
- Batch download all photos (staggered to prevent browser blocking)
- Proper filename generation with dates
- Progress notifications during downloads

 Photo Management:
- Delete individual photos with confirmation
- Clear all photos option with confirmation
- Photo storage settings modal
- Storage statistics (count, size, date range)
- Toggle photo storage consent on/off

 Professional UI:
- Responsive photo grid layout
- Hover effects and smooth transitions
- Modal dialogs for photo details and settings
- Filter and sort controls
- Storage usage indicators
- Empty state messaging

TECHNICAL IMPROVEMENTS:
- Enhanced WebcamManager with persistent storage methods
- Comprehensive error handling and user feedback
- Storage quota monitoring with warnings
- Proper photo metadata structure
- Browser-compatible download implementation

Users can now capture photos during photography sessions and:
 View them later in a beautiful gallery
 Download their favorites
 Manage storage and privacy settings
 Organize by session type and date
2025-10-28 07:49:55 -05:00
dilgenfritz 13a76981be fix: Repair broken punishment game mode
- Register inline scenarios with scenario loader system
- Fix scenario collections to use correct available scenarios
- Update punishment-gauntlet mode to use scenario-humiliation-task
- Ensure all game modes reference only existing scenarios

The punishment mode was broken because:
1. Inline scenarios in game.js weren't registered with scenario loader
2. Game mode collections referenced non-existent scenario files
3. Missing scenario-humiliation-challenge -> now uses scenario-humiliation-task

All scenario-based game modes should now work correctly.
2025-10-28 07:27:06 -05:00
dilgenfritz 6152d29487 feat: Improve scenario-based game UI and scoring
- Hide task images in scenario mode to prevent scrolling issues
- Implement scenario-specific scoring system (50 points per step)
- Add special scenario styling with better layout and typography
- Display 'Scenario' instead of difficulty for scenario tasks
- Change 'Skip' to 'Give Up' button for scenarios (more appropriate)
- Remove streak system for scenarios (doesn't make sense)

These changes make scenario games much more enjoyable by:
1. Removing the single image that forces scrolling
2. Using meaningful points system for story progression
3. Better visual presentation focused on the narrative
2025-10-28 07:06:19 -05:00
dilgenfritz 6132d7d045 cleanup: Remove temporary test files 2025-10-28 06:59:46 -05:00
dilgenfritz 5b3920ff0a feat: Modularize scenario system and fix game mode configuration
Major Features:
- Extract scenario data from gameModeManager.js into individual files
- Create modular scenario loading system with browser compatibility
- Fix timed challenge and score target configuration options

� New Scenario Files:
- src/data/scenarios/index.js - Scenario loader and registry system
- src/data/scenarios/training-regimen.js - Personal Training Academy
- src/data/scenarios/dress-up-photo.js - Photography Studio scenario
- src/data/scenarios/creative-tasks.js - Creative Arts Academy
- src/data/scenarios/punishment-session.js - Disciplinary training

 Improvements:
- Removed 1976+ lines of embedded scenario data from gameModeManager.js
- Added browser-compatible module system using window.scenarioRegistry
- Fixed configuration dropdowns for timed and score target modes
- Enhanced game.js with proper event handling for custom inputs
- Added comprehensive logging and debugging capabilities

 Technical Changes:
- Updated gameModeManager.js to include config options in dynamic HTML
- Fixed event listener targeting for custom time/score inputs
- Added scripts for scenario extraction and management
- Maintained backward compatibility with existing game.js scenarios

 Benefits:
- Game content now easily editable in separate files
- Modular system allows easy addition/removal of scenarios
- Clean separation between game logic and content
- Improved maintainability and organization
2025-10-28 06:41:01 -05:00
dilgenfritz 3a57f1ce71 Refactor file structure with feature-based organization
New Structure:
- src/core/ - Core game engine (game.js, gameModeManager.js, main.js, preload.js)
- src/features/ - Feature modules organized by functionality:
  - webcam/ - Photography system (webcamManager.js)
  - tasks/ - Task management (interactiveTaskManager.js, aiTaskManager.js)
  - audio/ - Audio system (audioManager.js)
  - images/ - Image management (popupImageManager.js, image-discovery-fix.js)
  - ui/ - UI components (flashMessageManager.js)
- src/data/ - Game data and configuration (gameData.js)
- src/styles/ - CSS stylesheets (styles.css and variants)
- src/utils/ - Utility functions (desktop-file-manager.js)

 Benefits:
- Feature-based organization for better maintainability
- Clear separation of concerns
- Easier testing and debugging
- Scalable architecture for future development
- Self-contained feature modules

Updated package.json, index.html paths, and main.js for new structure.
Added comprehensive README.md documenting the architecture.
2025-10-27 14:46:30 -05:00
dilgenfritz 6752097979 Implement complete webcam photo gallery system
- Add WebcamManager for camera access and photo capture
- Replace timer steps with camera buttons for photography tasks
- Add photo count validation and progress tracking
- Remove quit options to ensure photo requirements are met
- Implement game-end photo gallery with full-size viewer
- Add Photography Studio game mode with dedicated scenarios
- Include responsive design with professional styling
- Maintain local photo storage for privacy

Features:
- Step-based photo requirements with visual progress
- Interactive photo gallery with navigation
- Comprehensive session metadata tracking
- Privacy-focused local-only photo storage
2025-10-27 12:27:04 -05:00
dilgenfritz 395c79363c Restore original game modes and fix missing scenario steps - Added back Timed Challenge and Score Target modes alongside scenario modes - Updated gameModeManager to map new mode names to original engine functionality - Removed interactive tasks from standard/timed/scored modes as requested - Fixed missing scenario continuation steps (slutty_continuation, photo_series_continuation) - Added complete branching paths for dress-up photo scenarios - All 7 game modes now working: Standard, Timed, Scored, and 4 scenario modes - Maintained periodic popup system across all modes - Preserved original time/score configuration UI 2025-10-27 11:51:38 -05:00
dilgenfritz 478b5884fb Fix Flash Message Method Calls
Flash Message Fixes:
 Changed this.flashMessageManager.show() to showMessage()
 Fixed all AI Tasks flash message calls to use correct method
 Removed unused 'type' parameter from flash messages
 All AI Tasks feedback messages should now display properly

 Error Resolved:
 TypeError: this.flashMessageManager.show is not a function
 AI connection test messages will now appear correctly
 Task generation success/failure messages working
 Configuration change notifications restored

 Expected Result:
 All AI Tasks operations should now show proper feedback messages
 Connection tests, task generation, and setting changes provide user feedback
 No more JavaScript errors when using AI features
2025-09-29 07:25:52 -05:00