-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
featureFeature level issuesFeature level issues
Description
Description
Implement full-screen DreamSong interface that opens in new Obsidian leaf, providing expanded story viewing experience. Also includes full-screen button for DreamTalk media files.
Parent Specification: #271 - Dreamweaving Operations Specification
Acceptance Criteria
- Full-screen buttons appear on hover at top-center (same x-coordinate as flip button)
- Full-screen buttons use "maximize" icon from lucide (same styling as flip button)
- DreamTalk full-screen opens media files in new Obsidian leaf using built-in media viewer
- DreamSong full-screen opens expanded story interface in new leaf
- One leaf per DreamNode strategy with proper cleanup
- 100% same DreamSong component (reusable between embedded + full-screen contexts)
- Full-screen DreamSong is scrollable, dynamically generated website from canvas data
- Obsidian leaf management handles proper opening/closing
- Performance optimized with async parsing and component caching
Technical Requirements
Component Architecture
- Extract existing DreamSong component for reusability (embedded + full-screen contexts) ✅
- Shared component renders with context-aware styling (circular mask vs full-screen) ✅
- Same story flow and navigation in both contexts ✅
Full-Screen Button Implementation
- Position: Top-center, same x-coordinate as flip button ✅
- Icon: "maximize" from lucide icon set ✅
- Styling: Consistent with existing flip button styling ✅
- Behavior: Hover state triggers appearance ✅
Leaf Management Strategy
- One leaf per DreamNode: Unique leaf ID based on DreamNode ID ✅
- Media Files: Use Obsidian's built-in media viewer ✅
- DreamSong Interface: Custom leaf type for expanded story experience ✅
- Cleanup: Proper memory management when leaves are closed ✅
Performance Optimization
- Async Canvas Parsing: Parse canvas data asynchronously ✅
- Component Caching: Store parsed components, update only when canvas changes ✅
- Dynamic Website Generation: Function of canvas data with optimal rendering patterns ✅
DreamSong Presentation Refinement
- Dynamic Generation: Canvas data → website-like scrollable interface ✅
- Same Presentation: Identical rendering between embedded and full-screen contexts ✅
Dependencies
- DreamSong interface component from DreamNode Flip Animation & DreamSong Interface #324 (completed) ✅
- Canvas Parser Service from DreamWeaving canvas integration #286 (for story data) ✅
- Obsidian Plugin API for leaf management ✅
- Existing media file handling patterns ✅
- Lucide icon set (maximize icon) ✅
User Experience
DreamTalk Full-Screen ✅
- User hovers over DreamTalk side → full-screen button appears at top-center
- Click maximize button → media file opens in new Obsidian leaf
- Standard Obsidian media viewing experience
- One leaf per DreamNode (replaces if already open)
DreamSong Full-Screen ✅
- User hovers over DreamSong side → full-screen button appears at top-center
- Click maximize button → expanded story interface opens in new leaf
- Identical story flow as embedded version, but unobscured and scrollable
- Dynamically generated website experience from canvas data
- Proper Obsidian integration with leaf management
- One leaf per DreamNode with automatic cleanup
Technical Approach
Phase 1: Component Extraction & Reusability ✅
- Extract DreamSong component from current embedded implementation
- Create context-aware rendering (embedded vs full-screen)
- Maintain 100% functional parity
Phase 2: Full-Screen Button Implementation ✅
- Add maximize buttons with proper positioning and styling
- Implement hover state management
- Integrate with existing flip button patterns
Phase 3: Leaf Management Implementation ✅
- Create Obsidian leaf management service
- Implement one-leaf-per-node strategy
- Handle media file opening via Obsidian API
Phase 4: DreamSong Presentation Refinement ✅
- Refine canvas-based dynamic website generation
- Implement async parsing and caching optimization
- Ensure scrollable, performant full-screen experience
Definition of Done
- Full-screen buttons implemented with maximize icon and proper positioning
- DreamTalk media files open correctly in Obsidian leaves using built-in viewer
- DreamSong full-screen interface works in separate leaf with identical functionality
- Component reusability confirmed (shared between embedded + full-screen contexts)
- One-leaf-per-DreamNode strategy implemented with proper cleanup
- Performance meets expected thresholds with async parsing and caching
- DreamSong presentation component refined for dynamic website generation
- Implementation complete and tested in both contexts
- Tests passing for leaf management and component reusability
- Documentation updated with usage examples
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
featureFeature level issuesFeature level issues
Projects
Status
No status