897c0278fb
Features: - Complete tracker configuration UI with add/remove functionality - User Stats: Custom stats, status fields, skills section - Info Box: Configurable widgets (date, weather, temp, time, location, events) - Present Characters: Custom fields, relationships, character stats, thoughts - Character-specific stats with color interpolation - New multi-line format for cleaner AI generation and parsing - Auto-cleanup of placeholder brackets in AI responses - Relationship badges with emoji mapping - Advanced inventory v2 system with multi-location storage - Responsive mobile support with horizontal scrolling - Removed legacy format support for cleaner codebase - Fixed context injection for together mode (no duplication) - Updated README with new features and configuration guide
4.0 KiB
4.0 KiB
Tracker Customization Implementation Plan
Overview
Allow users to fully customize what trackers display, including custom fields, toggles, and formats.
Settings Schema Design
extensionSettings.trackerConfig = {
userStats: {
// Array of custom stats (allows add/remove/rename)
customStats: [
{ id: 'health', name: 'Health', enabled: true, value: 100 },
{ id: 'satiety', name: 'Satiety', enabled: true, value: 100 },
{ id: 'energy', name: 'Energy', enabled: true, value: 100 },
{ id: 'hygiene', name: 'Hygiene', enabled: true, value: 100 },
{ id: 'arousal', name: 'Arousal', enabled: true, value: 0 }
],
showRPGAttributes: true,
statusSection: {
enabled: true,
showMoodEmoji: true,
customFields: ['Conditions']
},
skillsSection: {
enabled: false,
label: 'Skills'
}
},
infoBox: {
widgets: {
date: { enabled: true, format: 'Weekday, Month, Year' },
weather: { enabled: true },
temperature: { enabled: true, unit: 'C' },
time: { enabled: true },
location: { enabled: true },
recentEvents: { enabled: true }
}
},
presentCharacters: {
showEmoji: true,
showName: true,
customFields: [
{ id: 'physicalState', label: 'Physical State', enabled: true, placeholder: 'Visible traits' },
{ id: 'demeanor', label: 'Demeanor Cue', enabled: true, placeholder: 'Observable demeanor' },
{ id: 'relationship', label: 'Relationship', enabled: true, type: 'relationship' },
{ id: 'internalMonologue', label: 'Internal Monologue', enabled: true, placeholder: 'First person thoughts' }
],
characterStats: {
enabled: false,
stats: []
}
}
}
Implementation Phases
Phase 1: State Management ✓
- Update state.js with trackerConfig schema
- Add migration logic for existing users
- Ensure persistence in loadSettings/saveSettings
Phase 2: Edit Trackers Modal UI
- Create src/systems/ui/trackerEditor.js
- Add "Edit Trackers" button in template.html
- Build tabbed modal interface with save/cancel/reset
Phase 3: User Stats Customization
- Tab UI for managing custom stats array
- RPG attributes toggle
- Status section configuration
- Skills field configuration
Phase 4: Info Box Customization
- Tab UI for widget toggles
- Date format selector
- Temperature unit toggle
Phase 5: Present Characters Customization
- Tab UI for custom fields management
- Character stats configuration
- Field ordering and custom additions
Phase 6: Dynamic Rendering
- Update renderUserStats() for variable stats
- Update renderInfoBox() for conditional widgets
- Update renderThoughts() for custom fields
Phase 7: Dynamic Prompts
- Update generateTrackerInstructions()
- Build prompts from trackerConfig
- Handle variable formats
Phase 8: Flexible Parsing
- Update parser.js for variable formats
- Handle custom stat names
- Parse custom character fields
Phase 9: Responsive CSS
- Support variable stat counts
- Conditional widget visibility
- Mobile-friendly layouts for all configs
Phase 10: Testing
- Test minimal configurations
- Test maximal configurations
- Test custom field names
- Verify mobile responsiveness
Files to Modify
-
State & Persistence
- src/core/state.js
- src/core/persistence.js
- src/utils/migration.js
-
UI Components
- template.html (add button)
- src/systems/ui/trackerEditor.js (NEW)
- src/systems/ui/modals.js (register new modal)
-
Rendering
- src/systems/rendering/userStats.js
- src/systems/rendering/infoBox.js
- src/systems/rendering/thoughts.js
-
Generation
- src/systems/generation/promptBuilder.js
- src/systems/generation/parser.js
-
Styling
- style.css
Critical Success Factors
- Backward compatibility via migration
- Mobile-first responsive design
- Flexible parsing handles variable formats
- CSS adapts without breaking existing layouts
- Settings persist correctly across sessions