Appearance
Daedalus Ribbon Configuration Design (2026-04-10)
Design Goals
- Keep ribbon as a thin orchestration layer.
- Route actionable mutations through operation + adapter paths.
- Avoid duplicate mutation logic between ribbon, menu, and sidebar.
Tab Model
- home
- draw
- modify
- annotate
- view
- layer
- snapAssist
- file
Group Model
- Home: tools, history
- Draw: quick tools, construction
- Modify: transform, line edit, constraints
- Annotate: dimension, annotation style
- View: grid/zoom/minimap
- Layer: layer manager, entity style, paper layout controls
- SnapAssist: object snaps, quick draw assist, diagnostics
- File: new/open/save/export
Command Wiring Policy
- Ribbon action -> single function in D_Daedalus.vue
- That function uses one of:
- applyOperationWithHistoryCommand + shared execute helper
- executeLayoutCommandEntry fallback only if operation command is unavailable
- Avoid action-specific duplicated history execution blocks.
Layout/Viewport Controls Policy
- Use edit-layouts command group for:
- active space/layout switching
- viewport add/remove/update/lock
- title block and title fields
- Keep pointer-move preview mutations outside history until pointer-up commit.
Duplication Cleanup Rule
- Shared helper executes generated history command and applies post-steps:
- applyLayoutStateFromDocument
- markCoreSpatialIndexDirty
- scheduleAutoSave
Next Maintenance Steps
- Continue replacing repeated applyOperationWithHistoryCommand + execute boilerplate with shared helper usage.
- Add lightweight unit tests for operationHistoryAdapter mapping of layout operations.
