Skip to content

feat(terminal): use design system search controls (KR-08a) - #1556

Merged
mergify[bot] merged 4 commits into
mainfrom
codex/kr-08a-terminal-search
Oct 15, 2026
Merged

mergify[bot] merged 4 commits into
mainfrom
codex/kr-08a-terminal-search

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Die Terminalsuche verwendet jetzt Eingabe und Schaltflächen aus dem neuen Designsystem.
Suchverhalten, Tastenkürzel und die Rückkehr des Fokus zum Terminal bleiben erhalten.
Für dich ist keine Entscheidung nötig; die unabhängigen Prüfungen folgen beim Orchestrator.

Report

Package: KR-08a · Review tier: A (PTY view)
Goal / benefit: remove classic presentation from terminal search while preserving the existing terminal engine and search behavior.
Parent / owner: classic UI removal; assigned implementation worker. Root owns acceptance and independent reviews.
Base: 2305136fd283079d8fd82530c66b4e44a999a409 · Candidate: 431ef2908e96687ca20953a7cf0c82bdf99798ec.
Scope: three files, 105 additions + 47 deletions = 152 total diff lines. No dependencies added. Session restore, split/close-session controls, Rust/PTY lifecycle and classic CSS removal are excluded.
Native evidence: get_goal initially returned goal: null; create_goal created the bounded KR-08a implementation/handover goal. Subsequent get_goal confirmed it active while final gates and delivery remained pending. Parent acceptance remains with Root.

What changed

  • Use the existing design-system Input and five Button controls with --g-* tokens. Active options use the primary button variant, with the existing aria-pressed state.
  • Move all search labels, tooltips, placeholder and regex error text into the German dictionary. Preserve the polite match-count announcement.
  • Preserve the search handlers, addon options, match decorations, Ctrl+Shift+F, Enter/Shift+Enter, Alt+C/Alt+R, Escape and terminal focus restoration. Resolve the input DOM node through the search container because the existing React 18 Input component does not forward refs.
  • Update existing test selectors from classic classes to accessible text/roles. Add a behavior regression checking DS controls, input focus, exact next/previous addon arguments, result count and close/clear/focus behavior. Test boundary: rendered TerminalView and mocked xterm/Tauri APIs; no production-module mocks added.

Evidence

Observed 2026-10-15 on Linux, in the assigned worktree.

Command Exit code / observation
npx --no-install vitest run src/components/TerminalView.test.tsx -t 'renders design search controls with unchanged addon calls and close focus' before implementation 1; compiling regression failed on the classic input class
npx --no-install vitest run src/components/TerminalView.test.tsx 0; 39 tests
npx --no-install vitest run src/components src/i18n 0; 322 tests in 53 files
npm run typecheck 0
npm run build 0; existing large-chunk warning
node scripts/contrast-check.mjs 0; 704 pairings
node scripts/ci/ratchet.mjs check 0; state-token count remains 191
npx --no-install playwright test e2e/terminal-view.mount.spec.ts --workers=1 0; 1 test
node .pa/kr-08a-shots.mjs (local proof harness) 0; real xterm in browser with Tauri mocks, no page errors, Escape returns focus to xterm
bash scripts/ci/red-first.sh via local dependency-reuse wrapper 0; exact named test absent on merge-base, green at candidate
git diff origin/main...HEAD --check 0
bash scripts/ci/secret-scan.sh before both commits 0
Both commit hooks 0
bash scripts/ci/gates.sh lane prepush 0; all gates green at candidate, 1423 frontend tests and 2273 Rust tests passed (7 Rust skips)
git push -u origin codex/kr-08a-terminal-search 0; full prepush hook also passed
git ls-remote origin codex/kr-08a-terminal-search 0; remote SHA equals candidate

The red-first wrapper reused existing node_modules in the gate-created temporary base only after byte-identical comparisons of package.json and package-lock.json; no packages were installed and the gate/test selection was unchanged. The failing regression was committed first as a099d96e, followed by implementation 431ef290.

Screenshot observation: inspected kr-08a-shots/shell-light.png and shell-dark.png at 1440×900. The open search bar sits above the terminal rows, with a visible input focus ring, distinct active Aa toggle, 2/11 match count, previous/next arrows and close button. Text and controls remain visible in both themes. Existing terminal highlights are retained. Screenshots remain in the coordinator's requested local report directory; no private host paths are published. A supplementary 600px-wide check measured equal client/scroll widths (556px) for the bar and displayed the regex error; this is not a whole-application narrow-layout acceptance.

NICHT ABGEDECKT

  • Linux does not compile #[cfg(windows)] tests (including ConPTY/DPAPI) or exercise Windows-specific clippy branches. The Windows lane runs in the merge queue.
  • Browser proof uses Tauri mocks; no native desktop process, real worker or live PTY was launched. External services were not checked.
  • Project-memory mirror and AgentsRoom memory tools were unavailable. Startcheck had no provider-usage file; provider headroom and exact runtime model were not independently observed.
  • Full application responsive-layout acceptance, session restore and split/close-session presentation belong to other packages.

Reviews and disposition

Review: ausstehend (Stufe A)

Root must arrange two non-OpenAI vendor reviews bound to the candidate SHA. This worker did not review, set review-ok, mark ready or enqueue the PR.

Handover

Implemented, checked locally and pushed with remote SHA verification; independent review, acceptance and merge remain distinct outstanding stages. Root owns the next step: arrange reviews, record dispositions, and integrate through Mergify after acceptance. No release or deployment is included.

MERGE-PR1556 — conflict resolution (2026-10-15)

Merge of origin/main a5f8c538216a928a24869c161268dc94c4411584 resolved conflicts in src/i18n/de.ts; gates prepush exit 0.

  • Starting head: 431ef2908e96687ca20953a7cf0c82bdf99798ec; merge candidate: 4dee2ac08840e98f0f6f52ede36367810f1d1116.
  • Resolution, src/i18n/de.ts: retain both the terminal-search dictionary entries and main's recovery/bootstrap entries unchanged. The installed merge driver resolved the insertion conflict; a dictionary comparison confirmed the unchanged union of both parents.
  • TerminalView.tsx and TerminalView.test.tsx are byte-identical to the starting package. No seam conflict or manual package-code edit was needed. All other incoming changes are inherited from main.
  • The PR diff remains three files, 105 additions and 47 deletions. The larger first-parent merge diff below includes incoming main changes.
  • Merge trailer: No-Test: merge of origin/main to resolve a conflict; behaviour unchanged.
  • Native goal evidence: get_goal returned null, create_goal created the bounded MERGE-PR1556 goal, and a subsequent get_goal confirmed it active during verification. Integration and acceptance remain with Root.

Evidence on the merge candidate:

Command Exit code / observation
git diff --check and git diff origin/main...HEAD --check 0 each
npx --no-install vitest run src/components/TerminalView.test.tsx 0; 39 passed
bash scripts/ci/secret-scan.sh before commit 0; no leaks
Merge commit hook (precommit) 0
bash scripts/ci/gates.sh lane prepush, first attempt 1; one LeitstandRoute.test.tsx:57 query timed out waiting for the Agenten region, 1426 tests passed
npx --no-install vitest run src/screens/leitstand/LeitstandRoute.test.tsx --coverage 1; all 19 tests passed, but this isolated file cannot meet the whole-application coverage thresholds
bash scripts/ci/gates.sh lane prepush, unchanged second attempt 0; 1427 frontend tests and 2273 Rust tests passed, 7 Rust tests skipped
bash .pa/kr-08a-red-first.sh 0; existing wrapper executes bash scripts/ci/red-first.sh, reusing dependencies only after identical manifest/lockfile checks; no installation
git push -u origin codex/kr-08a-terminal-search 0; the full prepush hook also passed, including all 1427 frontend and 2273 Rust tests
git ls-remote origin codex/kr-08a-terminal-search 0; remote equals merge candidate
gh pr view 1556 --json mergeable,headRefOid,url 0; MERGEABLE, candidate SHA confirmed
git diff HEAD^1 HEAD --stat 0; shown below

The first frontend failure did not recur in either subsequent full run. The affected Leitstand files match main; no assertion, timeout or coverage threshold was changed. A timing-sensitive failure is a hypothesis, not a diagnosed cause; Root retains follow-up ownership if it recurs.

KNOWN_ISSUES.md                                    |   1 +
 e2e/boot.smoke.spec.ts                             |   6 +
 e2e/shell-layout.spec.ts                           |   6 +
 e2e/terminal-view.mount.spec.ts                    |   6 +
 scripts/ci/native-tests.sh                         |  22 ++-
 scripts/lib/dev-hygiene.test.mjs                   |  36 +++-
 scripts/test-native-tests.sh                       |  41 +++-
 src-tauri/src/store/native_managed_tests.rs        | 209 +++++++++++++++++----
 src/App.audit.test.tsx                             |   2 +
 src/App.test.tsx                                   |   2 +
 src/__tests__/boot.smoke.test.tsx                  |   6 +-
 src/components/BootstrapScreen.test.tsx            |  15 ++
 src/components/BootstrapScreen.tsx                 |  34 ++--
 src/components/ErrorBoundary.test.tsx              |  22 ++-
 src/components/ErrorBoundary.tsx                   |  35 ++--
 src/components/RecoveryScreen.module.css           |  40 ++++
 src/dev/DevBadge.test.tsx                          |  11 +-
 src/flags/featureFlags.test.ts                     |  38 ++--
 src/flags/featureFlags.ts                          |  22 ++-
 src/flags/useFeatureFlag.test.ts                   |  16 +-
 src/i18n/de.ts                                     |   7 +
 .../einstellungen/EinstellungenScreen.test.tsx     |  11 +-
 src/screens/leitstand/LeitstandRoute.test.tsx      |   5 +-
 src/shell/mount/SteuerungRoute.test.tsx            |   3 +-
 src/shell/mount/mount.test.tsx                     |  10 +-
 src/shell/mount/start.mount.test.tsx               |   3 +-
 tools/denkraum/dr2-design.spec.mjs                 |  20 +-
 tools/denkraum/server.mjs                          |   2 +-
 28 files changed, 503 insertions(+), 128 deletions(-)

NICHT ABGEDECKT: Linux does not compile #[cfg(windows)] tests or exercise Windows clippy branches; the Windows lane runs in the merge queue. Browser smoke, frontend build and workflow gates were not rerun in this merge job (they belong to the Linux lane). No new native desktop, live PTY, external-service or visual acceptance claim is made. Project-memory access and provider-usage evidence remain unavailable.

Review: ausstehend (Stufe A). Existing review dispositions are unchanged. Root owns any delta-review decision; this resolution preserves package code and behavior. No labels, readiness or queue action were changed by this job.

Conflict merge 126e0f6: de.ts, both sides kept

Test-First: src/components/TerminalView.test.tsx::renders design search controls with unchanged addon calls and close focus
Test-First: src/components/TerminalView.test.tsx::renders design search controls with unchanged addon calls and close focus
@mergify

mergify Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

@Cuarroc Dieser PR hat einen Konflikt mit main und kann nicht in die Merge-Queue. Bitte main hineinmergen (kein Rebase, kein Force-Push) und den Konflikt loesen; das Label conflict verschwindet danach von selbst.

@mergify mergify Bot added the conflict label Oct 15, 2026
No-Test: merge of origin/main to resolve a conflict; behaviour unchanged
@mergify mergify Bot removed the conflict label Oct 15, 2026
@Cuarroc
Cuarroc marked this pull request as ready for review October 15, 2026 15:42
@Cuarroc

Cuarroc commented Oct 15, 2026

Copy link
Copy Markdown
Owner Author

Root 2026-10-15 17:42:30: tier A, author OpenAI (codex job). Reviews bound to head 4dee2ac: Claude APPROVE (delta 431ef29..4dee2ac, conflict merge behaviour-neutral) + Kimi APPROVE (OpenRouter). Kimi inline-style contrast point judged not real by Claude delta review; optional follow-up D2. R1556-A1..A5 low, open, non-blocking. Marked ready; review-ok only after green CI on this head.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-15T16:42:11.458077Z 126e0f6 New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Cuarroc

Cuarroc commented Oct 15, 2026

Copy link
Copy Markdown
Owner Author

Root review gate 2026-10-15 17:53:09, bound to head 4dee2ac: tier A, two non-author vendors (Anthropic Claude delta APPROVE, Moonshot Kimi APPROVE) at this head; CI gates linux/windows/red-first SUCCESS. No open high/medium. Setting review-ok.

@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 15, 2026
@Cuarroc

Cuarroc commented Oct 15, 2026

Copy link
Copy Markdown
Owner Author

Root auto-queue: head 4dee2ac unchanged since review-ok, all checks green. @Mergifyio queue

@mergify mergify Bot added the queued label Oct 15, 2026
@mergify

mergify Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

@Cuarroc Dieser PR hat einen Konflikt mit main und kann nicht in die Merge-Queue. Bitte main hineinmergen (kein Rebase, kein Force-Push) und den Konflikt loesen; das Label conflict verschwindet danach von selbst.

@mergify mergify Bot added the conflict label Oct 15, 2026
@mergify

mergify Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • ✅ Entered queue — 2026-10-15 15:53 UTC · Rule: default · triggered by merge protections
  • 🚫 Left the queue — 2026-10-15 16:04 UTC · at 4dee2ac08840e98f0f6f52ede36367810f1d1116

This pull request spent 10 minutes 40 seconds in the queue, with no time running CI.

Reason

Pull request #1556 has been dequeued

Queue conditions are not satisfied:

  • -conflict [📌 queue requirement]
  • all of: [🚦 Auto-merge conditions]
    • -conflict
  • any of: [🔀 queue conditions]
    • all of: [📌 queue conditions of queue rule default]
      • -conflict

Hint

You should look at the reason for the failure and decide if the pull request needs to be fixed or if you want to requeue it.
If you do update this pull request, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

Requeued — the merge queue status continues in this comment ↓.

@mergify mergify Bot added dequeued and removed queued labels Oct 15, 2026
@Cuarroc Cuarroc removed the review-ok Pipeline: review disposition complete, no open high finding label Oct 15, 2026
No-Test: conflict resolution only (src/i18n/de.ts, both sides kept)
@Cuarroc

Cuarroc commented Oct 15, 2026

Copy link
Copy Markdown
Owner Author

Root 2026-10-15 18:41:36, head 126e0f6 (conflict merge, No-Test trailer; package files TerminalView.tsx/.test.tsx unchanged vs 4dee2ac: git diff empty). Kimi re-review @126e0f63 REQUEST_CHANGES adjudicated (rounds exhausted; Root decision: merge with known limits):

ID Sev Finding Disposition
R1556-K4 medium TerminalView.tsx:486 ref reaches into Input's DOM via querySelector; inline ref re-attaches each render follow-up (ref forwarding on Input); behaviour covered by the focus test, no defect today
R1556-K5 medium dropping .terminal-search-bar may lose overlay positioning REJECTED: main's .terminal-search-bar (styles.css:2956) is a flex item (flex: 0 0 auto; align-self: flex-end), not an overlay; the inline style keeps exactly that flow. Low follow-up: the now-unused CSS rule stays in styles.css (dead CSS)
R1556-K6 low colours moved to inline styles bypass contrast-check already judged by the Claude delta review (tokens only, not a contrast defect); follow-up D2
review-ok after the Claude delta review of 4dee2ac..126e0f6 and ALL checks incl. CodeQL green on this head.

@Cuarroc

Cuarroc commented Oct 15, 2026

Copy link
Copy Markdown
Owner Author

Root review gate 2026-10-15 18:50:28, bound to head 126e0f6. Tier A, author OpenAI. Two non-author vendors at this head: Claude (Anthropic) delta APPROVE 4dee2ac..126e0f6 (srv-review-pr1556-claude-1840; de.ts both sides kept, package code identical) + Kimi (Moonshot) review @126e0f63, REQUEST_CHANGES adjudicated in my previous comment (K5 rejected with evidence, K4/K6 follow-ups). Review rounds exhausted; Root decision: merge with known limits (follow-ups: R1556-K4 ref forwarding, dead .terminal-search-bar CSS, D2, A1-A5 low). All checks green incl. CodeQL (gh pr checks: no fail, no pending). Setting review-ok.

@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 15, 2026
@Cuarroc

Cuarroc commented Oct 15, 2026

Copy link
Copy Markdown
Owner Author

Root auto-queue: head 126e0f6 unchanged since review-ok, all checks green. @Mergifyio queue

@mergify mergify Bot added the queued label Oct 15, 2026
@mergify
mergify Bot merged commit 9528ff8 into main Oct 15, 2026
15 checks passed
@mergify

mergify Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 14 minutes 24 seconds in the queue, including 8 minutes 47 seconds running CI.

Required conditions to merge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-ok Pipeline: review disposition complete, no open high finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant