docs: Finalize all design documents

Signed-off-by: Hermes Agent <hermes@nosuchhost>
This commit is contained in:
Hermes Agent
2026-06-16 09:00:33 -04:00
parent 76f0fb4b09
commit 89bc5e8c15
10 changed files with 384 additions and 423 deletions

View File

@@ -1,4 +1,4 @@
# Canvas Feature Specification
# Design Document: Canvas Feature Specification
## Overview
The canvas is the infinite zoomable/pannable workspace where krates live. It serves as the primary interaction surface for exploring Kubernetes clusters.
@@ -39,8 +39,8 @@ interface CanvasState {
## Navigation
### Scroll Wheel
- ** Default **: Pan canvas
- ** Ctrl/⌘ + scroll **: Zoom canvas (intercepted via wheel event with `e.ctrlKey || e.metaKey`)
- **Default**: Pan canvas
- **Ctrl/⌘ + scroll**: Zoom canvas (intercepted via wheel event with `e.ctrlKey || e.metaKey`)
### Space + Drag Panning
- Critical: must work even when shell window has keyboard focus
@@ -52,13 +52,13 @@ interface CanvasState {
- Do NOT use `e.stopPropagation()` - allow event propagation
### Click/Typed Key Triggers
- ** Click on empty canvas **: Open spotlight
- ** Type any key **: Open spotlight with that character pre-seeded
- **Click on empty canvas**: Open spotlight
- **Type any key**: Open spotlight with that character pre-seeded
### Zoom Levels / LOD
- ** zoom > 0.5 **: Normal view — krates expanded, all windows visible, draggable
- ** zoom < 0.4 **: Collapsed view — krates become 230px wide overview cards, no windows rendered
- ** Hysteresis**: Collapse at 0.4, re-expand at 0.5 (prevents flickering)
- **zoom > 0.5**: Normal view — krates expanded, all windows visible, draggable
- **zoom < 0.4**: Collapsed view — krates become 230px wide overview cards, no windows rendered
- **Hysteresis**: Collapse at 0.4, re-expand at 0.5 (prevents flickering)
### Animations
- CSS `transform` with `transition` only for programmatic "fly" animations: `.52s cubic-bezier(.22,.8,.28,1)`