Repository navigation
feat(conversation): preserve explicit sharpening with Glass controls - #1967
Conversation
Test-First: src/components/ConversationView.sharpen.public.test.tsx::keeps sharpening named while waiting and never sends the rewritten draft automatically Test-First: src/components/ConversationView.sharpen.public.test.tsx::keeps the waiting count and navigation and single cancellation of real questions Test-First: src/components/ConversationView.sharpen.public.test.tsx::announces the final call after the actual open questions are answered Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Keep phase feedback separate from the stable action and preserve the existing draft-only sharpening lifecycle. Plan-ID: KR-04d-1-SHARPEN-CONTROLS Test-First: src/components/ConversationView.sharpen.public.test.tsx::keeps sharpening named while waiting and never sends the rewritten draft automatically Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Plan-ID: KR-04d-1-SHARPEN-CONTROLS No-Test: record the accepted provider facts delivery Co-authored-by: GPT-6.1 Sol <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: f28cbef0de
ℹ️ 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".
| |---|---|---|---|---|---|---|---|---| | ||
| | KR-03a-1-STATUS | Kernverbindung und Kontingent im bestehenden Tresorpanel getrennt vom Schlüsselzugang anzeigen | srv-kr03a1-status; Stabs pflegt, Root nimmt ab | 01a (#1547) gemergt; eigener serieller Metadatennachtrag nach P1/#1918 | Server | B: zwei fremde Modellfamilien; Metadaten C | Erledigt mit Merge von PR #1922: lesende Verbindungs-/Kontingentanzeige im bestehenden Tresorpanel | Keine neuen Zugangsdaten, API oder Abfrageschleife; Quellbelege an `448629da`; finale Metadaten-/Review-/Root-Abnahme getrennt, native V2-ACC1b/UAT und Glass-Gesamtabnahme offen; Elternziel KR-03a bleibt teilweise erfüllt/offen | 7364e03a-2d7a-4528-9ecb-551d3dbdf3d2 | | ||
| | KR-04b | Projektbezogene Chatentwürfe und echten Verlauf erhalten | srv-kr-04b-chat-state; Root nahm die gemergte Lieferung ab | #1569 gemergt | Server | B | Erledigt: #1894 am 25.10.2026 00:38:13Z gemergt (`ae9abb5f0b1388d317f7dfb81dd86e387bebf780`); Ticket DONE | Entwurf je Projekt nur im laufenden UI-Dokument; echter Verlauf neu gelesen. Browser-/Tauri-Mock-Belege, kein Neustart-/Datenträger-/nativer Nachweis, keine installierte/wirksame Lieferung oder Glass-Gesamt-/UAT-Abnahme. #1894-Nachläufer bleiben; kein neuer Folgeauftrag | 54a480e5-5c04-4387-b15b-ae60d7e62e6c | | ||
| | KR-04d-1-SHARPEN-CONTROLS | Preserve explicit sharpening with named Glass controls in the existing ConversationView | srv-kr04d1-sharpen; Root accepts and integrates | KR-04b/#1894 merged (ae9abb5f) | Server | B: two source review families accepted; metadata C | Delivered after merge of PR #1967: bounded sharpening controls; Root final-head acceptance pending | Root accepted Kimi/GLM source reviews at `0445aa1a` and design under the 21:58Z aggregate/untouched-route rule. Stable action name, separate phase feedback, questions/cancel and editable final draft; no autosend, new hook owner, IPC or native change. Full KR-04d, native, installed/effective, Glass and UAT remain open | #334; e4464eaa-b33a-4136-9a2a-49a5ce8ce412 | |
There was a problem hiding this comment.
Update the PLAN row to reflect final package acceptance
The new package row says “Root final-head acceptance pending”, but the reviewed commit’s report explicitly records Root’s final acceptance at 22:57Z, including acceptance of the metadata delta and the decision to mark the candidate Ready. This leaves the canonical plan reporting an outstanding acceptance that the same delivery records as completed. Update this bounded package’s acceptance status while retaining the explicitly open parent, native, installed/effective and UAT obligations. The binding “Reviews and advisors” guidance requires the package’s PLAN row to describe the post-merge truth and treats stale status as a medium finding.
AGENTS.md reference: AGENTS.md:L74-L76
Useful? React with 👍 / 👎.
✅ Merged into
|
| Condition | Required by | |
|---|---|---|
| ✅ | github-review-approved |
GitHub repository ruleset rule main-pr-required-checks |
| ✅ | label != do-not-merge |
— |
The batch, tested on draft #1972
| Condition | Required by | |
|---|---|---|
| ✅ | check-success = gates (linux) |
— |
| ✅ | check-success = gates (windows) |
— |
| ✅ | check-success = red-first |
— |
| ✅ | any of: check-success = @github-actions/gates (linux), check-neutral = @github-actions/gates (linux), check-skipped = @github-actions/gates (linux) |
GitHub repository ruleset rule main-pr-required-checks |
| ✅ | any of: check-success = @github-actions/gates (windows), check-neutral = @github-actions/gates (windows), check-skipped = @github-actions/gates (windows) |
GitHub repository ruleset rule main-pr-required-checks |
| ✅ | any of: check-success = @github-actions/red-first, check-neutral = @github-actions/red-first, check-skipped = @github-actions/red-first |
GitHub repository ruleset rule main-pr-required-checks |
| ✅ | any of: check-neutral = @mergify/Mergify Merge Protections, check-skipped = @mergify/Mergify Merge Protections, check-success = @mergify/Mergify Merge Protections |
GitHub repository ruleset rule main-pr-required-checks |
Times in UTC · dashboard · how the merge queue works
Die vorhandene Aktion „Schärfen“ behält während der Bearbeitung ihren zugänglichen Namen und zeigt die Phase getrennt an.
Rückfragen öffnen und Schärfung abbrechen verwenden die vorhandenen Glass-Bedienelemente.
Der überarbeitete Entwurf bleibt zur Prüfung im Eingabefeld und wird erst durch ausdrückliches Senden verschickt.
Report
Plan-ID: KR-04d-1-SHARPEN-CONTROLS
0445aa1a; the final-head Tier C metadata delta and package acceptance remain with Root. KR-04d/native/installed/effective/UAT parents remain open.86401bd81ec62e5e684903f4d29db18730dfbd86.f28cbef0deeb869fbe988905640a011c23a4eed4. Accepted source review boundary:0445aa1a6d3708f6d17332a5116c5273e016f009; the only later change is one PLAN row inf28cbef0.89521b6cc4268d3d46f4c4b3bd28af676b382a70, then bounded implementation0445aa1a.docs/PLAN.md, +1/-0; foreign tracked changes: 0.gpt-6.1-sol, efforthigh, ownturn_context, 2026-10-27T21:16Z. Initial native goal was null; a bounded ticket/source-handover goal was created. Parent/product acceptance remains open.Change and contract evidence
S1 uses the existing
src/design/controls/Button(tintandghost, small),loading={sharpening.running}, and the unchanged explicit disabled predicate. A separaterole=statusexposes the existing thinking/waiting/finishing words. The action stays named Schärfen, including the waiting interval without an active provider call.S2–S4 preserve the existing hook, project ID, setText callback, phase transitions and send ownership. The new public test imports the existing ConversationView and real useSharpening/IPC normalization; only Tauri core/event modules are mocked. A deferred literal enhance_prompt result replaces the editable draft, records zero sends, and is sent only after the explicit public Send action. Actual question wire rows exercise singular/plural counts, navigation, exactly one cancellation closure, list_questions polling and final draft feedback.
S5 covers first-call refusal with draft/error retained, empty/blank drafts, absent project, disabled chat and sending chat. Existing hook tests cover abandoned-row closure/unmount and cancellation during row filing; they were not modified. This is bounded guard regression evidence, not exhaustive project/generation race coverage.
S6 leaves the existing Send control, textarea refs and keyboard handlers, stream, runtimeAttention, terminal action, project name, App mount, useSharpening, IPC, protocols and native seams unchanged. No new dependencies, local styles, shared control changes or architecture allowlist entries.
Accepted source-phase evidence and raw exits
bash scripts/sync.sh startnpm run dev:start-check -- --max-cargo 2 --min-free-gb 3.5npm run typecheckfollowed bynpm run test:unit -- src/components/ConversationView.sharpen.public.test.tsxbefore source editsnpm run typechecknpm run test:unit -- src/components/ConversationView.sharpen.public.test.tsx src/components/ConversationView.test.tsx src/lib/useSharpening.test.ts src/lib/useSharpening.switch.test.tsbash scripts/ci/red-first.shbash scripts/ci/secret-scan.sh, before each successful commitgit diff --checkand exact-file/RAW checkgit push -u origin codex/kr04d1-sharpen(normal hook executesbash scripts/ci/gates.sh lane prepush)0445aa1a, full prepush 306 seconds, every gate green; Rust 2331 passed with 7 pre-existing skipsgit ls-remote origin codex/kr04d1-sharpen0445aa1a6d3708f6d17332a5116c5273e016f009Preserved source-author capture inspection record: inspected light/dark waiting and rewritten images, light thinking and dark finishing. Status and question actions remain visible; the rewritten draft is editable. Browser fixtures do not establish native behavior, assistive technology, keyboard coverage, UAT or performance.
Recorded source design gate and Root acceptance
The later dispatch amendment was read and applied. Exact BASE was reconstructed after editing using git archive into an isolated ignored baseline copy with existing node_modules linked; no pre-edit measurement is claimed. Both runs use the unchanged existing design gate, without
--update.npm --prefix .pa/kr04d-baseline-86401bd8 run design:gate -- --out <private-artifact-dir>— raw exit 1, 396 cases, 44 findings against the repository's existing design baseline.npm run design:gate -- --out <private-artifact-dir>— raw exit 1, 396 cases, 44 findings.[slack, nesting, tabs, eyebrows, grids]: BASE = HEAD = [240, 2684, 132, 376, 26], delta [0, 0, 0, 0, 0].Initial push attempt: raw exit 1 before source/Rust suites because the reconstructed ignored BASE artifact was still nested inside the author checkout and was traversed by the CRLF source scanner. The complete owned artifact was relocated intact to private report storage; the failed log was preserved. No tracked source, gate, assertion or threshold changed. The normal full hook was then rerun on the same candidate.
Architecture drift: precommit gate exit 0, no new occurrences, no allowlist change.
Review and delivery disposition
Source Tier B: Root accepted the two different non-author families Kimi/Moonshot and GLM/Zhipu with no findings at
0445aa1a, as recorded below. All non-PLAN tracked blobs are identical at the final head; no source re-review was launched. Review: ausstehend (Stufe C) for the bounded0445aa1a..f28cbef0metadata delta. Root owns final-head acceptance, Ready, review-ok and Mergify. This worker changed no labels and queued nothing.Final metadata phase evidence (2026-10-27)
KR-04d-1-SHARPEN-CONTROLSrow immediately after KR-04b, retaining the same owner, fix: preserve project chat drafts across routes (KR-04b) #1894 predecessor, Server, source B/metadata C, bounded post-merge state, merge queue: checking #324 + #329 + #326 + #331 together on main (f48af09) #334 and UUIDe4464eaa-b33a-4136-9a2a-49a5ce8ce412.turn_contextat 22:42:43.266Z observedgpt-6.1-sol, efforthigh, in the assigned worktree before editing. Coordinatoradmission-stage.jsonsupplied dated quota/rules separately; the current resource guard passed with warm slot 9. The Facts phase had actually exited at 22:36:34Z and its final head wasf0ca0dff; active peers had no PLAN changes, and the dispatch explicitly granted this sole PLAN window. Thelage-jetztmirror was unavailable in this worktree; live branch, GitHub and orchestration events were inspected.441ade96PLAN reference: SHA-256826229a658d91127ffab1f4028ae32a7bcebae9ce0d8c6fcb6e514c6eddd84e3. Every other tracked Git blob is identical to accepted source0445aa1a; no ConversationView/useSharpening/test/text/IPC/native/gate/baseline change.npm run dev:start-check -- --max-cargo 2 --min-free-gb 3.5bash scripts/ci/secret-scan.shbefore the documentation commitgit commitwith normal precommit andNo-Testtrailerf28cbef0; full precommit 74 secondsgit diff --check origin/main...HEADgit diff 0445aa1a..HEAD --exit-code -- . ':!docs/PLAN.md'and completegit ls-tree -rcomparison excluding PLANgit push -u origin codex/kr04d1-sharpenwith normal hook executingbash scripts/ci/gates.sh lane prepushf28cbef0; complete prepush 286 seconds, foreground push 296.8 seconds; every gate greengit ls-remote origin refs/heads/codex/kr04d1-sharpenf28cbef0deeb869fbe988905640a011c23a4eed4gh pr view 1967 --json isDraft,headRefOid,stategh run list --commit 86401bd81ec62e5e684903f4d29db18730dfbd86 --workflow ci --limit 1The earlier source-phase evidence remains bound to
0445aa1a; the passing full final-head hook above is the current gate evidence. No redundant passing prepush lane, new design measurement, source fix, review, new PR, Ready action, label or queue action was added.NICHT ABGEDECKT
#[cfg(windows)]tests (run_in_pty, npm_shim, ConPTY, DPAPI) or Windows clippy arms; the Windows lane belongs to the merge queue.Root review record (2026-10-27, source head 0445aa1)
Candidate source head
0445aa1a6d3708f6d17332a5116c5273e016f009(200 RAW, 3 files, no seam). Tier B; author family OpenAI (Codex gpt-6.1-sol)..pa/review_transport.py, Ollama, 21:55:26Z, exit 0Both reviewers verified the following: the accessible name "Schärfen" stays stable during loading (
ConversationView.tsx:230); the phase is shown separately via role=status (:177-181); the disabled predicate is unchanged (:226); there is no auto-send path, and send happens only on an explicit click; the cancel answer is sent exactly once; the props and callback signatures are unchanged; only src/designButton(tint/ghost, sm, loading) is used and the rawconvo-sharpenbuttons were removed; Tauri-only mocks with literal drafts.Design gate (Root decision of 21:58Z): the aggregate delta is 0 on every metric
[240, 2684, 132, 376, 26]. The four MCP per-case swaps are the harness measurement error proven by Stabs (follow-up DESIGN-GATE-MCP-CAPTURE), on a route this PR does not touch. Design: accepted, non-increase met.Source accepted by Root at
0445aa1a. The required own PLAN row is now present atf28cbef0deeb869fbe988905640a011c23a4eed4; Root must check only this Tier C metadata delta before final-head acceptance/Ready.review-okremains Root-owned and must be bound to that final head.Root final acceptance (2026-10-27 22:57Z)
0445aa1a..f28cbef0:git diff --stat=docs/PLAN.md | 1 +only (KR-04d-1-SHARPEN-CONTROLS row); Tier C, checked by Root. Source bytes unchanged.No-Test:reason in f28cbef says "provider facts" (copy slip); the commit is docs-only, so No-Test is valid; no history rewrite.0445aa1a; author family OpenAI. Design aggregate delta 0 (Root record above).review-okbound tof28cbef0.Root disposition addendum (2026-10-27 23:18Z)
docs/PLAN.md:255(discussion_r4395094061): the row says "Root final-head acceptance pending"; that was true when written and is superseded by the 22:57Z acceptance above. Accepted as wording follow-up for the day's single collected PLAN PR (Elias rule 2); no head change here (it would void review-ok)./einstellungen@es-tab-mcpcases (body line "four MCP settings cases"), i.e. the proven MCP-capture class (DESIGN-GATE-MCP-CAPTURE, PR fix(design-gate): wait for the selected settings panel before capture #1969); the "untouched-route" wording in the row is not the basis. Aggregate delta 0. The collected PLAN PR replaces "aggregate/untouched-route rule" with "aggregate 0; only proven es-tab-mcp capture cases".