docs(ui): add 19 UI wireframes across 5 categories (v0.1 + v1.0)

First wireframe set covering all major UI surfaces:
- HUD: basic insert (v0.1), full insert with perception modes (v1.0)
- Dialogue: speaking, choosing, overheard states (v0.1), full with
  relationship indicators (v1.0)
- Monologue: idle, reaction (v0.1), thought threading (v1.0)
- Popups: modal, tooltip, interaction list (v0.1), context menu,
  notification stack (v1.0)
- Menus: main, pause, save/load (v0.1), main menu, options (v1.0)

README.md cross-references each wireframe to governing D-records.
JSON source + PNG exports tracked in git.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-23 15:36:06 +01:00
co-authored by Claude Opus 4.6
parent 30a21e9a08
commit 996a000146
39 changed files with 3766 additions and 0 deletions
@@ -0,0 +1,107 @@
{
"name": "v01-monologue-idle",
"shapes": {
"bg": {
"type": "Rectangle",
"left": 0, "top": 0, "width": 1140, "height": 760,
"fillColor": "#1a1e24",
"strokeColor": "#1a1e24"
},
"bg-game-label": {
"type": "Text",
"left": 380, "top": 340,
"text": "GAME VIEW — PLAYER IDLE IN CORRIDOR\n(no active conversation, no active threat)",
"fontColor": "#333340",
"fontSize": 14
},
"monologue-block": {
"type": "Rectangle",
"left": 200, "top": 598, "width": 740, "height": 64,
"fillColor": "#00000000",
"strokeColor": "#00000000"
},
"monologue-line-1": {
"type": "Text",
"left": 200, "top": 598, "width": 740,
"text": "The station never really goes quiet. You just stop noticing.",
"fontColor": "#d0d4e0",
"fontSize": 13,
"wordWrap": true
},
"monologue-trigger-label": {
"type": "Text",
"left": 200, "top": 618,
"text": "trigger: time_idle // mood: content // character: detective",
"fontColor": "#3a4455",
"fontSize": 10
},
"hint-bar": {
"type": "Rectangle",
"left": 0, "top": 728, "width": 1140, "height": 32,
"fillColor": "#0e1218",
"strokeColor": "#333340"
},
"hint-text": {
"type": "Text",
"left": 20, "top": 736,
"text": "[E] Interact [Shift] Sprint [Tab] Insert [RMB] World Menu [Esc] Pause",
"fontColor": "#8899aa",
"fontSize": 11
},
"minimap-frame": {
"type": "Rectangle",
"left": 880, "top": 16, "width": 244, "height": 244,
"fillColor": "#12141a",
"strokeColor": "#333340",
"corners": [4, 4, 4, 4]
},
"minimap-stub-label": {
"type": "Text",
"left": 975, "top": 124,
"text": "minimap",
"fontColor": "#333340",
"fontSize": 12
},
"positioning-note": {
"type": "Text",
"left": 200, "top": 670,
"text": "Position: lower center screen. Does NOT obstruct game view above ~60% height.",
"fontColor": "#3a4455",
"fontSize": 10
},
"fade-note": {
"type": "Text",
"left": 200, "top": 684,
"text": "Standard opacity 85%. No container — text floats freely on z-layer 7.",
"fontColor": "#3a4455",
"fontSize": 10
},
"dialogue-zone-label": {
"type": "Text",
"left": 200, "top": 700,
"text": "← dialogue box would appear BELOW this line (max 20% screen height from bottom) →",
"fontColor": "#2a3540",
"fontSize": 10
},
"dialogue-zone-line": {
"type": "Line",
"left": 0, "top": 608, "width": 1140, "height": 0,
"strokeColor": "#1e2830"
},
"annotation-title": {
"type": "Text",
"left": 16, "top": 16,
"text": "v0.1 MONOLOGUE — IDLE OBSERVATION",
"fontColor": "#556677",
"fontSize": 11
},
"annotation-notes": {
"type": "Text",
"left": 16, "top": 30, "width": 840,
"text": "time_idle trigger. Single line. 85% opacity. No container chrome. Floats above dialogue zone. Standard chime on appearance.",
"fontColor": "#3a4455",
"fontSize": 10,
"wordWrap": true
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

@@ -0,0 +1,133 @@
{
"name": "v01-monologue-reaction",
"shapes": {
"bg": {
"type": "Rectangle",
"left": 0, "top": 0, "width": 1140, "height": 760,
"fillColor": "#1a1e24",
"strokeColor": "#1a1e24"
},
"bg-game-label": {
"type": "Text",
"left": 340, "top": 320,
"text": "GAME VIEW — PLAYER OBSERVES KAEL IN WRONG LOCATION\n(entity blob in fog transitioning to amber silhouette — cognitive delay active)",
"fontColor": "#333340",
"fontSize": 14
},
"fog-entity-blob": {
"type": "Ellipse",
"left": 500, "top": 440, "width": 24, "height": 24,
"fillColor": "#555566",
"strokeColor": "#555566"
},
"fog-entity-pulse-ring": {
"type": "Ellipse",
"left": 490, "top": 430, "width": 44, "height": 44,
"fillColor": "#00000000",
"strokeColor": "#e8c547"
},
"fog-entity-note": {
"type": "Text",
"left": 450, "top": 476,
"text": "blob → color transition (0.3s)",
"fontColor": "#3a4455",
"fontSize": 10
},
"monologue-urgent-accent": {
"type": "Rectangle",
"left": 196, "top": 580, "width": 3, "height": 80,
"fillColor": "#c8d8f0",
"strokeColor": "#c8d8f0"
},
"monologue-block": {
"type": "Rectangle",
"left": 200, "top": 580, "width": 740, "height": 80,
"fillColor": "#00000000",
"strokeColor": "#00000000"
},
"monologue-line-1": {
"type": "Text",
"left": 200, "top": 580, "width": 740,
"text": "Those footsteps... that's Kael's walk.",
"fontColor": "#e0e8f8",
"fontSize": 13,
"wordWrap": true
},
"monologue-line-2": {
"type": "Text",
"left": 200, "top": 602, "width": 740,
"text": "What's he doing in this corridor?",
"fontColor": "#c8d4ec",
"fontSize": 13,
"wordWrap": true
},
"monologue-trigger-label": {
"type": "Text",
"left": 200, "top": 625,
"text": "trigger: observe_npc // mood: suspicious // chime: urgent variant at onset of cognitive delay (D-067)",
"fontColor": "#3a4455",
"fontSize": 10
},
"cognitive-delay-note": {
"type": "Text",
"left": 200, "top": 639,
"text": "0.6s cognitive delay — monologue fires DURING delay, not after. Text IS the recognition (D-060).",
"fontColor": "#3a4455",
"fontSize": 10
},
"full-opacity-note": {
"type": "Text",
"left": 200, "top": 653,
"text": "Urgent: 100% opacity, left accent bar (cyan). Standard monologue: 85% opacity, no bar.",
"fontColor": "#3a4455",
"fontSize": 10
},
"hint-bar": {
"type": "Rectangle",
"left": 0, "top": 728, "width": 1140, "height": 32,
"fillColor": "#0e1218",
"strokeColor": "#333340"
},
"hint-text": {
"type": "Text",
"left": 20, "top": 736,
"text": "[E] Interact [Shift] Sprint [Tab] Insert [RMB] World Menu [Esc] Pause",
"fontColor": "#8899aa",
"fontSize": 11
},
"minimap-frame": {
"type": "Rectangle",
"left": 880, "top": 16, "width": 244, "height": 244,
"fillColor": "#12141a",
"strokeColor": "#333340",
"corners": [4, 4, 4, 4]
},
"minimap-stub-label": {
"type": "Text",
"left": 975, "top": 124,
"text": "minimap",
"fontColor": "#333340",
"fontSize": 12
},
"dialogue-zone-line": {
"type": "Line",
"left": 0, "top": 608, "width": 1140, "height": 0,
"strokeColor": "#1e2830"
},
"annotation-title": {
"type": "Text",
"left": 16, "top": 16,
"text": "v0.1 MONOLOGUE — REACTION (RECOGNITION EVENT)",
"fontColor": "#556677",
"fontSize": 11
},
"annotation-notes": {
"type": "Text",
"left": 16, "top": 30, "width": 840,
"text": "Urgent chime at onset of cognitive delay. Two-line monologue: first line names the recognition, second continues the thought. Accent bar left. Entity transitioning fog-blob to amber in game world above.",
"fontColor": "#3a4455",
"fontSize": 10,
"wordWrap": true
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

@@ -0,0 +1,200 @@
{
"name": "v10-monologue-threading",
"shapes": {
"bg": {
"type": "Rectangle",
"left": 0, "top": 0, "width": 1140, "height": 760,
"fillColor": "#1a1e24",
"strokeColor": "#1a1e24"
},
"bg-game-label": {
"type": "Text",
"left": 370, "top": 300,
"text": "GAME VIEW — DEDUCTION SEQUENCE IN PROGRESS\n(player has observed contradiction, chain building)",
"fontColor": "#333340",
"fontSize": 14
},
"thread-container": {
"type": "Rectangle",
"left": 180, "top": 490, "width": 780, "height": 200,
"fillColor": "#00000000",
"strokeColor": "#00000000"
},
"thread-line-connector": {
"type": "Line",
"left": 185, "top": 502, "width": 0, "height": 170,
"strokeColor": "#2a3550"
},
"monologue-node-1": {
"type": "Rectangle",
"left": 192, "top": 490, "width": 740, "height": 36,
"fillColor": "#00000000",
"strokeColor": "#00000000"
},
"monologue-text-1": {
"type": "Text",
"left": 200, "top": 492, "width": 720,
"text": "Kael's shift ended at 14:00. He was at the Terminal at 15:30.",
"fontColor": "#d0d4e0",
"fontSize": 13,
"wordWrap": true
},
"monologue-meta-1": {
"type": "Text",
"left": 200, "top": 510,
"text": "observe_npc // 14s ago",
"fontColor": "#3a4455",
"fontSize": 9
},
"thread-node-dot-1": {
"type": "Ellipse",
"left": 183, "top": 499, "width": 5, "height": 5,
"fillColor": "#4a9ebb",
"strokeColor": "#4a9ebb"
},
"monologue-node-2": {
"type": "Rectangle",
"left": 192, "top": 532, "width": 740, "height": 36,
"fillColor": "#00000000",
"strokeColor": "#00000000"
},
"monologue-text-2": {
"type": "Text",
"left": 200, "top": 534, "width": 720,
"text": "That manifest I saw — Bay 12. The count was wrong.",
"fontColor": "#d0d4e0",
"fontSize": 13,
"wordWrap": true
},
"monologue-meta-2": {
"type": "Text",
"left": 200, "top": 552,
"text": "discover_evidence // 2 min ago",
"fontColor": "#3a4455",
"fontSize": 9
},
"thread-node-dot-2": {
"type": "Ellipse",
"left": 183, "top": 541, "width": 5, "height": 5,
"fillColor": "#e8c547",
"strokeColor": "#e8c547"
},
"monologue-node-3-active": {
"type": "Rectangle",
"left": 192, "top": 572, "width": 740, "height": 40,
"fillColor": "#00000000",
"strokeColor": "#00000000"
},
"monologue-accent-3": {
"type": "Rectangle",
"left": 196, "top": 572, "width": 2, "height": 40,
"fillColor": "#c8d8f0",
"strokeColor": "#c8d8f0"
},
"monologue-text-3": {
"type": "Text",
"left": 204, "top": 574, "width": 720,
"text": "He was supposed to be off-station. Which means he never left.",
"fontColor": "#e0e8f8",
"fontSize": 13,
"wordWrap": true
},
"monologue-meta-3": {
"type": "Text",
"left": 204, "top": 595,
"text": "observe_anomaly // now // DEDUCTION",
"fontColor": "#4a6888",
"fontSize": 9
},
"thread-node-dot-3": {
"type": "Ellipse",
"left": 183, "top": 581, "width": 7, "height": 7,
"fillColor": "#c8d8f0",
"strokeColor": "#c8d8f0"
},
"unreliable-hint": {
"type": "Rectangle",
"left": 200, "top": 618, "width": 480, "height": 20,
"fillColor": "#12141a",
"strokeColor": "#2a3040",
"corners": [2, 2, 2, 2]
},
"unreliable-text": {
"type": "Text",
"left": 208, "top": 622,
"text": "v1.0: unreliable narrator hint — italics indicate character may be wrong",
"fontColor": "#556677",
"fontSize": 10
},
"connection-viz": {
"type": "Rectangle",
"left": 200, "top": 644, "width": 200, "height": 24,
"fillColor": "#12141a",
"strokeColor": "#2a3040",
"corners": [2, 2, 2, 2]
},
"connection-viz-text": {
"type": "Text",
"left": 208, "top": 649,
"text": "KAEL ←→ BAY 12 ←→ MANIFEST",
"fontColor": "#6677aa",
"fontSize": 10
},
"connection-viz-note": {
"type": "Text",
"left": 408, "top": 650,
"text": "v1.0: knowledge connection visualization",
"fontColor": "#3a4455",
"fontSize": 10
},
"thread-scroll-note": {
"type": "Text",
"left": 200, "top": 672,
"text": "Thread scrolls upward as new thoughts arrive. Oldest fade out. Max 3-4 visible.",
"fontColor": "#3a4455",
"fontSize": 10
},
"hint-bar": {
"type": "Rectangle",
"left": 0, "top": 728, "width": 1140, "height": 32,
"fillColor": "#0e1218",
"strokeColor": "#333340"
},
"hint-text": {
"type": "Text",
"left": 20, "top": 736,
"text": "[E] Interact [Shift] Sprint [Tab] Insert [J] Case File [RMB] World Menu [Esc] Pause",
"fontColor": "#6677aa",
"fontSize": 11
},
"minimap-frame": {
"type": "Rectangle",
"left": 880, "top": 16, "width": 244, "height": 244,
"fillColor": "#12141a",
"strokeColor": "#c8d0e0",
"corners": [4, 4, 4, 4]
},
"minimap-stub-label": {
"type": "Text",
"left": 975, "top": 124,
"text": "minimap",
"fontColor": "#333340",
"fontSize": 12
},
"annotation-title": {
"type": "Text",
"left": 16, "top": 16,
"text": "v1.0 MONOLOGUE — THOUGHT THREADING (DEDUCTION CHAIN)",
"fontColor": "#556677",
"fontSize": 11
},
"annotation-notes": {
"type": "Text",
"left": 16, "top": 30, "width": 840,
"text": "Thread of 3 thoughts connected by vertical line. Each node has source trigger + timestamp. Active node has accent bar. Connection visualization. Unreliable narrator hints in italics.",
"fontColor": "#3a4455",
"fontSize": 10,
"wordWrap": true
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB