From d64be383d1ef100b9762c0acf0eb569f29487f8c Mon Sep 17 00:00:00 2001
From: Forge Dev
Date: Sat, 11 Jul 2026 14:18:25 +0000
Subject: [PATCH] =?UTF-8?q?design:=20DECISION=20=E2=80=94=20Layout=20B=20l?=
=?UTF-8?q?ibrary-centric=20main=20window;=20grade=20drawer=20summonable?=
=?UTF-8?q?=20(A=20as=20mode=20inside=20B);=20consequences=20for=20macOS?=
=?UTF-8?q?=20phase?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/design/001-layout-decision.md | 25 +++++++++++++++++++++++++
docs/design/wireframes.html | 12 ++++++------
2 files changed, 31 insertions(+), 6 deletions(-)
create mode 100644 docs/design/001-layout-decision.md
diff --git a/docs/design/001-layout-decision.md b/docs/design/001-layout-decision.md
new file mode 100644
index 0000000..63d11e1
--- /dev/null
+++ b/docs/design/001-layout-decision.md
@@ -0,0 +1,25 @@
+# Design decision 001 — Main window layout
+
+**Decision (2026-07-11): Layout B, library-centric.**
+
+Owner choice from docs/design/wireframes.html.
+
+## Shape
+- Main window = clip table (sortable, dense, 44px rows), project tree left
+ (days / cameras / jobs), inspector right (selection metadata + grade snapshot + actions).
+- Live grading = inspector mode when a camera slot is selected, plus a summonable
+ grade drawer (preview + node strip — Layout A distilled) for panel/trackball work.
+ Keyboard: ⌘G toggles drawer; slot switching stays single-keystroke.
+- Jobs (offload/verify/proxy) surface in the tree with inline progress — matches
+ Silverstack's workstation posture and our offload/proxy engines.
+
+## Consequences for macOS phase
+- NavigationSplitView: sidebar (tree) / content (table) / inspector — B maps 1:1
+ to native three-column. Grade drawer = bottom sheet over content column.
+- Table virtualization + SF Mono numerics from day one.
+- Panel focus model: active slot follows either table selection (camera row) or
+ explicit slot keys — must never steal focus during rec.
+
+## Skin (unchanged)
+Reel tokens: bg-0 chrome, amber accent as tally, #FF3B30 reserved for REC,
+SF Mono for TC/CDL/clip names, hairline dividers, 10.5px uppercase eyebrows.
diff --git a/docs/design/wireframes.html b/docs/design/wireframes.html
index 6714bac..44e3457 100644
--- a/docs/design/wireframes.html
+++ b/docs/design/wireframes.html
@@ -328,12 +328,12 @@ one step removed from the image. Stronger for offload/verify/report days; weaker
the "roll sound, grade now" moment.
-
Recommendation
-
Layout A as the main window, with B's table one ⌘-key away (Library tab/window).
- Forge's differentiator is in-camera live grading — the app should open into the moment
- it wins. The library table (B) is genuinely better for end-of-day work, so ship it as a
- second surface using the same panes, not a compromise hybrid of both.
-
Shared skin either way: bg-0 chrome, amber tally accent, #FF3B30 strictly for REC,
+
DECISION (2026-07-11): Layout B — library-centric
+
B is the main window. The clip table is home; days/cameras/jobs tree left,
+ inspector right. Live grading enters through the inspector when a camera is selected,
+ plus a summonable full-width grade drawer (preview + node strip from Layout A) for
+ trackball sessions — A survives as a mode inside B, not a separate window.
+
Shared skin: bg-0 chrome, amber tally accent, #FF3B30 strictly for REC,
SF Mono for TC/CDL/clip names, hairline dividers, 10.5px eyebrows — family resemblance
to dragonflight without pretending to be a web app.