Repository navigation
feat(hq): port intro and decision cues - #326
Conversation
Test-First: scripts/lib/hq-studio-ui.test.mjs::intro bar and design decision preserve the approved accessible token contract Co-Authored-By: GPT-5 Codex <noreply@openai.com>
Test-First: scripts/lib/hq-studio-ui.test.mjs::intro bar and design decision preserve the approved accessible token contract Co-Authored-By: GPT-5 Codex <noreply@openai.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1d84765905
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| <nav class="nav" aria-label="Arbeitsbereiche"><div class="nav-group">Steuern</div><button data-view="overview" aria-current="page"> Cockpit</button><button data-view="work"> Aufträge <span class="count" id="work-count">3</span></button><button data-view="fleet"> Agenten</button><button data-view="decisions"> Entscheidungen <span class="count" id="decision-count">1</span></button><div class="nav-group">Wissen & Modelle</div><button data-view="knowledge"> Kontext</button><button data-view="chat"> Code-Chat</button><button data-view="capacity"> Kapazität</button><div class="nav-group">System</div><button data-view="settings"> Einstellungen</button><p class="nav-foot">Ein Auftrag · ein Agent · ein Worktree<br>Belege vor Freigaben<br><br>Basis: ProjectA v1.4.1</p></nav> | ||
| <main id="main" tabindex="-1"> | ||
| <section class="section" id="overview"><div class="eyebrow">Projektcockpit / Heute</div><div class="heading"><div><h1 id="hero-title">ProjectA im Blick.</h1><p class="lead">Erkenne Engpässe, steuere die nächste sinnvolle Arbeit und gib Agenten nur belegten Kontext.</p></div><div class="actions"><button class="btn" id="new-project">+ Projekt</button><button class="btn primary" data-go="work">Auftrag planen →</button></div></div><div class="grid"><div class="card span-3"><div class="metric" id="metric-work">0</div><div class="metric-label">offene Aufträge</div><div class="metric-detail">Aus dem Demo-Projektmodell</div></div><div class="card span-3"><div class="metric" id="metric-blocked">0</div><div class="metric-label">mit Abhängigkeit</div><div class="metric-detail">Start erst nach Nachweis</div></div><div class="card span-3"><div class="metric" id="metric-evidence">0</div><div class="metric-label">Quellen im Kontext</div><div class="metric-detail">Mit Herkunft und Status</div></div><div class="card span-3"><div class="metric" id="metric-decisions">0</div><div class="metric-label">offene Entscheidungen</div><div class="metric-detail">Menschliche Freigabe</div></div><div class="card span-7"><div class="card-head"><h2>Als Nächstes</h2><button class="btn small ghost" data-go="work">Alle Aufträge</button></div><div class="list" id="next-list"></div></div><div class="card span-5"><div class="card-head"><h2>Entscheidung mit Belegen</h2><span class="status warn">Prüfen</span></div><h3 id="focus-decision">Multi-Harness-Abnahme</h3><p class="micro" id="focus-explain">Bevor Modelle autonom arbeiten, müssen Zustellung und Recovery nachgewiesen sein.</p><div class="callout warn"><strong>Was fehlt?</strong><p id="focus-missing">F-CORE-3 → F6 → Multi-Harness. Ein Profil ist kein Laufzeitbeleg.</p></div><button class="btn small" data-go="decisions" style="margin-top:14px">Belege und Optionen prüfen</button></div><div class="card span-7"><div class="card-head"><h2>Arbeitskette</h2><span class="micro">Simulierte Abnahmefolge</span></div><div class="steps" id="step-list"></div></div><div class="card span-5"><div class="card-head"><h2>Agentenbriefing</h2><button class="btn small ghost" data-go="knowledge">Kontext öffnen</button></div><p class="micro">Ziel · Blocker · relevante Quellen · offene Unsicherheit</p><div class="callout"><strong id="brief-head">Projektkontext</strong><p id="brief-preview">Wähle einen Auftrag, um ein kurzes Briefing zu sehen.</p></div><button class="btn small" id="copy-brief" style="margin-top:13px">Briefing kopieren</button></div></div></section> | ||
| <section class="section" id="overview"><div class="eyebrow">Projektcockpit / Heute</div><div class="heading"><div><h1 id="hero-title">ProjectA im Blick.</h1><p class="lead">Erkenne Engpässe, steuere die nächste sinnvolle Arbeit und gib Agenten nur belegten Kontext.</p></div><div class="actions"><button class="btn" id="new-project">+ Projekt</button><button class="btn primary" data-go="work">Auftrag planen →</button></div></div><div class="design-decision" id="design-decision"><div><strong>Dein Urteil ist gefragt</strong><p>Die Demo bestimmt die visuelle Richtung, bevor sie in die installierte App übernommen wird.</p></div><button class="btn" id="review" type="button" data-go="decisions">Design prüfen</button></div><div class="grid"><div class="card span-3"><div class="metric" id="metric-work">0</div><div class="metric-label">offene Aufträge</div><div class="metric-detail">Aus dem Demo-Projektmodell</div></div><div class="card span-3"><div class="metric" id="metric-blocked">0</div><div class="metric-label">mit Abhängigkeit</div><div class="metric-detail">Start erst nach Nachweis</div></div><div class="card span-3"><div class="metric" id="metric-evidence">0</div><div class="metric-label">Quellen im Kontext</div><div class="metric-detail">Mit Herkunft und Status</div></div><div class="card span-3"><div class="metric" id="metric-decisions">0</div><div class="metric-label">offene Entscheidungen</div><div class="metric-detail">Menschliche Freigabe</div></div><div class="card span-7"><div class="card-head"><h2>Als Nächstes</h2><button class="btn small ghost" data-go="work">Alle Aufträge</button></div><div class="list" id="next-list"></div></div><div class="card span-5"><div class="card-head"><h2>Entscheidung mit Belegen</h2><span class="status warn">Prüfen</span></div><h3 id="focus-decision">Multi-Harness-Abnahme</h3><p class="micro" id="focus-explain">Bevor Modelle autonom arbeiten, müssen Zustellung und Recovery nachgewiesen sein.</p><div class="callout warn"><strong>Was fehlt?</strong><p id="focus-missing">F-CORE-3 → F6 → Multi-Harness. Ein Profil ist kein Laufzeitbeleg.</p></div><button class="btn small" data-go="decisions" style="margin-top:14px">Belege und Optionen prüfen</button></div><div class="card span-7"><div class="card-head"><h2>Arbeitskette</h2><span class="micro">Simulierte Abnahmefolge</span></div><div class="steps" id="step-list"></div></div><div class="card span-5"><div class="card-head"><h2>Agentenbriefing</h2><button class="btn small ghost" data-go="knowledge">Kontext öffnen</button></div><p class="micro">Ziel · Blocker · relevante Quellen · offene Unsicherheit</p><div class="callout"><strong id="brief-head">Projektkontext</strong><p id="brief-preview">Wähle einen Auftrag, um ein kurzes Briefing zu sehen.</p></div><button class="btn small" id="copy-brief" style="margin-top:13px">Briefing kopieren</button></div></div></section> |
There was a problem hiding this comment.
Route the design CTA to the design review
When a user clicks the new Design prüfen button in hq2-concept.html, data-go="decisions" is handled by the generic navigation binding and opens the existing “Multi-Harness für ProjectA” decision screen rather than any design-review instructions or evidence. The approved demo instead populates a dedicated “Dein Review” checklist, so this CTA should invoke equivalent design-specific content rather than the unrelated product-decision view.
Useful? React with 👍 / 👎.
| } | ||
| document.querySelectorAll('nav [data-view]').forEach(b => b.onclick = () => show(b.dataset.view)); | ||
| $('.brand')?.addEventListener('click', e => { e.preventDefault(); show('overview'); }); | ||
| on('hide-guide', () => { $('#guidance').hidden = true; }); |
There was a problem hiding this comment.
Restore focus after dismissing the guide
When a keyboard user activates Ausblenden, this handler hides the guide while focus is still on #hide-guide, leaving focus in a removed-from-layout subtree and causing subsequent keyboard navigation to restart unpredictably. The other Studio concept already handles this case by moving focus to the active navigation button, so the workspace handler should likewise place focus on a stable visible control before or immediately after hiding the guide.
Useful? React with 👍 / 👎.
|
Queued — the merge queue status continues in this comment ↓. |
|
@Mergifyio queue |
Merge Queue Status
This pull request spent 41 minutes 3 seconds in the queue, including 12 minutes 57 seconds running CI. Required conditions to merge
|
Die Studio-Richtung enthält jetzt den kurzen Einstieg aus der Demo. Die Entscheidungsbox „Dein Urteil ist gefragt“ ist in beiden Studio-Konzepten sichtbar. Beide Elemente funktionieren in Hell und Dunkel und sind mit der Tastatur erreichbar.
Report
What changed
hq2-studio.htmlandhq2-concept.html.docs/dev-hq/concepts/studio-workspace.js:248to show the decision only in the overview and the existing event binding pattern atstudio-workspace.js:409for both buttons.studio-tokens.css:18-32and the global focus rule atstudio-tokens.css:61; no colour literals or second state pattern were added.Evidence
origin/main8e439b51606b4a8ecd321ad055d8f8e482494c30; prerequisite PR feat(hq2): shared light/dark design tokens for Studio concept (HQ2-03a) #311 observed merged as5ebb7b6697dca094b1cf7a6898c86a5e104726f2.node --test --test-name-pattern="intro bar and design decision preserve the approved accessible token contract" scripts/lib/hq-studio-ui.test.mjsbefore implementation: exit 1 (missing approved intro/decision markup).bash scripts/ci/red-first.sh: exit 0; the exact named test is absent/red at the base and green at the head.node scripts/contrast-check.mjs: exit 0; 352 light, dark, and increased-contrast pairings passed.npm run test:hq: exit 0; 516 tests passed.#review: exit 0; inspected directly. The box and intro bar are readable in both schemes and the focus ring is clearly visible.bash scripts/ci/gates.sh lane prepush: exit 0 at final committed HEAD; 1722 Rust tests passed, 7 skipped.git ls-remote --heads origin codex/hq2-03b-intro-decision: remote SHA1d84765905ae810bbedc4a8047bfd9d33584a751, matching final HEAD.NICHT ABGEDECKT
#[cfg(windows)]tests or the Windows clippy arms; the Windows lane runs in the merge queue.Review
Review: Tier B, independent reviewer Claude Sonnet 5.5 (Anthropic; author family: codex), candidate 1d84765.
Review disposition
[hidden]{display:none!important}exists instudio-workspace.cssandhq2-concept.html, so.design-decision/.guidancewithdisplay:flexstill hide. Tokens--amber-wash,--warn,--radius,--shadow,--space-3exist instudio-tokens.css, andhq2-concept.htmllinks that file.noticeand thedata-gohandler exist.node --test scripts/lib/hq-studio-ui.test.mjsexit 0 (18 pass). CI checks green.on()pattern is reused.Open points