Repository navigation
Terminal experience 2026-09-28: tab titles, needed-only alerts, quiet bell and colour depth for Windows Terminal - #484
Merged
Conversation
seathatflowsinourveins
force-pushed
the
claude/terminal-experience-20260928
branch
4 times, most recently
from
September 29, 2026 04:54
09bd949 to
5ff6776
Compare
… bell and colour depth for Windows Terminal Records the measured decision for this workstation: the AI-client profiles stop suppressing application titles (7 tabs, 1 distinct title -> 7 distinct), alerts narrow to pending decisions (one Notification and one bare BEL byte about 6 s after an unanswered AskUserQuestion, in this host's own bypassPermissions mode and in default mode, or an unanswered plan approval; none at open; no BEL byte in separate runs with every hook disabled), the bell sound is chosen from measured levels, static shell tabs stay silent, and Claude Code gets COLORTERM=truecolor through the profile environment key (41 256-colour -> 45 truecolor sequences; the key reached a wsl.exe --exec process in a trial with a negative control). Adds the decision record, a Windows Terminal paragraph in the Claude profile recipe, a scoped native-clients catalog sentence, supersession pointers in the community-sweep record (A09 and the bellStyle "Not covered" bullet), the receipt and its probe scripts (a BEL counter that follows the pinned terminal's parser, hooks-disabled controls, nine isolating mutants of the host check), and registers them in the shared manifests/evidence.json hot file. Runtime settings changed on the host only. The overturn step carries a direct schema probe for Terminal's toast work because release ancestry can miss a backport. Reviewed by Codex GPT-6 (read-only, max) and headless Opus (max): round 1 returned 26 findings (8 + 18, several overlapping), one bounded re-check of the repair returned 16 more, several overlapping; all were applied. Authored by a Claude Sonnet 5.5 coordinator session. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins
force-pushed
the
claude/terminal-experience-20260928
branch
from
September 29, 2026 05:46
5ff6776 to
f2626a4
Compare
seathatflowsinourveins
deleted the
claude/terminal-experience-20260928
branch
September 29, 2026 06:13
8 tasks done
seathatflowsinourveins
pushed a commit
that referenced
this pull request
Sep 30, 2026
…ough the packaged Codex lane on OmniRoute), 46 findings checked, 39 repaired Nine read-only jobs (#484, #498, #510, #519; two lenses each, #519 in three parts) returned 46 findings (3 high, 34 medium, 9 low). Each was graded by an independent Claude verifier (23: 17 confirmed, 4 partly, 2 refuted) or checked by the coordinator against the code or the upstream source before any change; 39 led to a repair, 2 were refuted, 3 concerned the removed second-distro target, 2 duplicates of one convention were kept. Repairs, each with a control that fails without it: the settings-swap tool installs only over the bytes it read, refuses keys beyond matcher and hooks and prints no matcher value (24 controls, 15 mutant runs); the notification-type scan resolves the catalog's spread identifier instead of choosing an array by contents (eight reader tests, seven mutants); the login-shell check needs an answer for every command and an end marker, uses type -P and lets only the first startup file bash reads shadow ~/.profile; the digest, Codex strict-config, overlay, tmux and pty probes exit nonzero when they measured nothing (selftests, an end-to-end SIGTERM case with a negative control); the BEL counter ignores UTF-8 C1 characters like the pinned output engine; the colour counter counts SGR only; the 512-combination bash oracle compares first_read; the practice repository's sound rule is exact. Wording corrected: tmux has a sync feature (measured); the bell icon clears after about 2 s on a focused tab; the push presence rule is for a local session; a profiles.defaults key beats a fragment-only profile; a terminal's permission notification is timed by inactivity (the fixed-delay timer is the Agent SDK path, which the coordinator's own earlier correction had confused). Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 30, 2026
… (gpt-6.1-sol and gpt-6-astra-ultra through the packaged Codex lane on OmniRoute) (#532) Nine read-only jobs of the packaged Codex lane (gpt-6.1-sol, effort max, through the local OmniRoute gateway) reviewed the four merged terminal-lane pull requests (#484, #498, #510, #519) and returned 46 findings; each was graded by an independent Claude verifier or checked against the code or the upstream source before any change (39 repaired, 2 refuted, 3 removed with the second-distro target, 2 kept). A bounded re-check of those repairs (three gpt-6.1-sol jobs and one gpt-6-astra-ultra job) returned 33 more findings (19 graded: 16 confirmed, 3 partly), all repaired in a fifth round: a false recovery claim in the settings-swap tool, signal handling that still left the client behind (first signal wins, deferred cleanups, client created under a spawn flag, a mutant runner that shows each case failing without its guard), controls that could not fail, two claims without a recorded rerun. Adds the sanitized review record, a receipt with the re-check data, a correction note in the four older receipts and native reruns of the scrub probe and the PATH digest. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
native-clientscatalog sentence, supersession pointers in the community-sweep record (its A09 setting and its bellStyle "Not covered" bullet), and the receipt with its probe scripts. The host settings the record describes (Windows Terminal fragment, Claude Code and Codex user settings) were applied separately on the host and are not in this diff.16f3c7fe(origin/mainat the last rebase)lane:foundationdocs/decisions/,recipes/claude-native-profile.md,catalogs/foundation/manifest.json(one sentence in thenative-clientslayer),evidence/receipts/,evidence/artifacts/terminal-experience-20260928/, andmanifests/evidence.json(hot-file protocol: main's copy taken after each rebase, own receipt entry and files re-registered, last commit). The two anti-pattern rows for this record are deliberately not in this PR:docs/harness-defaults.mdis edited by most changes (11 commits in the last 24 hours) and a shared edit there made this PR unmergeable twice; they arrive with the follow-up PR.SOTA sources
microsoft/terminalat tagv1.24.11911.0(installed stable) andv1.25.1912.0(preview):src/cascadia/TerminalCore/TerminalApi.cppL87;src/terminal/adapter/adaptDispatch.cppDoConEmuAction(v1.24 L3523-L3614, v1.25 L3533-L3628) and L3797-L3819;src/terminal/parser/OutputStateMachineEngine.hppL202-L225 and.cppL749-L892;src/cascadia/TerminalApp/TerminalPaneContent.cppL268-L303;Tab.cppL440-L461 and L1131-L1156;src/cascadia/WindowsTerminal/IslandWindow.cppL919-L924;src/cascadia/TerminalApp/AppLogic.cppL207-L439;src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cppL1203, L1246, L1271;src/cascadia/TerminalConnection/ConptyConnection.cppL104-L127 (profileenvironmentandWSLENV);src/terminal/parser/stateMachine.cppL1084-L1161, L1487-L1532, L1667-L1830 and L1838-L1924 (the transitions the probe's BEL counter models);adaptDispatch.cppL4799-L4818 (DECPSplays notes, no bell indicator);doc/cascadia/profiles.schema.json(BellStyleenum: nonotificationon either tag, present onmain). Unreleased onmain: pull requests #20010, #20011 and #20012 (gh api repos/microsoft/terminal/compare/93bdbfaa3d62304f4b50b4ca4484da4dd08e4a1f...<tag>reportsdivergedfor both tags).anthropics/claude-code:CHANGELOG.mdentries 2.1.141 (terminalSequence), 2.1.152 (sessionTitle), 2.1.228 and 2.1.236 (title glyphs, write on change), 2.1.212; docs read 2026-09-28:code.claude.com/docs/en/hooks("Emit terminal notifications", "Notification" types and timing, "Matcher patterns"),/settings("When edits take effect"),/terminal-config,/agent-view. The installed 2.1.284 binary for the notification sender, the undocumentedworker_permission_prompttype and the first-partyCOLORTERM=truecolortip.openai/codexat tagrust-v0.157.1:codex-rs/config/src/types.rsL652-L657 and L826-L833;codex-rs/tui/src/chatwidget/notifications.rsL72-L81 and L94-L98;codex-rs/tui/src/notifications/mod.rsL53-L61 and L116-L131;codex-rs/tui/src/terminal_palette.rsL43-L75 anddiff_render.rsL1132-L1156;codex-rs/core/config.schema.json.gnachman/iTerm2@52fdf260sources/VT100/VT100XtermParser.mL276-L320 (OSC 9 mapped, 777 not).DevinoSolutions/anotifier-for-claude-codex-cursor@92c080a7,777genius/agent-notifications@0376f9c9(README L241-L256,bin/install.shL228-L260),congmnguyen/claude-code-wsl2-setup@69620ec4,shanselman/toasty@973eeb8d,PeonPing/peon-ping@8ef37660,mylee04/code-notify@dcfd4ae6,asheshgoplani/agent-deck@035fd602,kbwo/ccmanager@ee0af836,zellij-org/zellij@a79e15e1; tmux 3.4 (options-table.c,tmux.1at the 3.4 tag).jq -n --arg), the colour depth uses Windows Terminal's native profileenvironmentkey, and no toast bridge was built because Windows Terminalmainwill ship native toasts. The probe scripts underevidence/artifacts/are measurement tools for this record's claims, not product code.Evidence-class table
suppressApplicationTitleis off, and does not with it onnative_proven(native Windows Terminal, negative control)terminal-experience-20260928,data.titles.trialnative_proven(UI Automation read-back, counts only)data.titles;wt_tab_titles.ps1AskUserQuestion(in this host's ownbypassPermissionsmode, read from the on-screen footer, and indefaultmode) and a pending plan approval (plan mode) each raise onepermission_promptNotification and one bare BEL byte about 6 s (+6.0 to +6.1 s) after opening, none at opennative_proven(real session in a pty, observer hook, no keys sent)data.alert_probes;alert_probe.py ask,... ask --permission-mode default,... plannative_proven(control runs)data.alert_probes.hooks_disabled_controls;alert_probe.py ... --controlsynthetic(24 self-test checks; a model of the cited transitions, not Windows Terminal itself)alert_probe.py --selftestsynthetic(fixture)data.hook_command_fixtureCOLORTERM=truecolor(0 vs 45 truecolor sequences, 41 vs 0 in 256 colours)native_proven(bare first frame)data.colour_capture_claude_bare_first_frame;color_capture.pyenvironmentkey reaches awsl.exe --execprocess (env=truecolorvsenv=without the key)native_proven(native Windows Terminal, negative control)data.environment_key_trialsynthetic(fixtures)data.check_script_controls;fragment_check_mutants.pynative_proven(user-reported observation)data.bell_user_reportBellStylelacksnotificationon both release tagssource_review(pinned tags, GitHub API)provenance.commands[tui] notificationslist loads under--strict-configand its kinds matchtype_name()native_proven(exit 0) plussource_reviewdata.codextabColororbellStyleis rejectednative_proven(schema validation, negative control)validate_fragment.py; receiptprovenance.commandsLocal commands run
Decision record
docs/decisions/2026-09-28-terminal-experience.md: evidence, alternatives with pins, and the overturn conditions (a Windows Terminal release whoseBellStyleenum carriesnotification, or whose ancestry contains #20012; a maintained state-indicator or WSL-aware notifier; the agent view probe).Review
Round 1: Codex GPT-6 (read-only, max) and a headless Opus (max) each returned
changes-needed(8 and 18 findings, several overlapping). All were accepted and repaired in one repair round: byte-accurate BEL counting with a hooks-disabled control, no raw payloads in the checkout, per-terminal notification sequences, scoped catalog and recipe statements, corrected line citations, the nativeenvironmentkey instead of a shell wrapper, silent static tabs, additional limitations, a direct schema probe for the toast watch, and supersession pointers.Round 2 (one bounded re-check of that repair, same two reviewers, both
changes-needed): 24 of the 26 round-1 items were fixed and 2 partly (line ranges); 16 new findings (4 from Codex, 12 from Opus, one of them informational; 6 medium, several overlapping), all applied in this head: the BEL counter now follows the pinned terminal's parser transitions (escape-state BEL, interrupted OSC and DCS strings, CAN and SUB) with 22 counter cases; the probe's private directory is removed on interruption and failure (two more checks); the hooks-disabled controls no longer report a Notification count that is unobservable by construction;AskUserQuestionis measured in this host's ownbypassPermissionsmode as well asdefault; the mutant harness now asserts exactly one expected failing rule per mutant (nine mutants, eight distinct rules, so the earlier "each with its own message" was corrected); the fragment validator uses the schema's declared draft; wording fixes (DECPS,agent_needs_inputtiming, the schema-enum signal proves #20011 not #20012, line ranges). No third review round, per the bounded-loop rule; the repaired probes and checks were re-run instead (self-test 24 of 24; five probe runs:askin the host's default mode, its hooks-disabled control,askin explicit default mode,planand its control; nine mutants; validator negative control) and the results are in the receipt.Residuals (recorded, not fixed here)
preferredNotifChannelreaching sessions that started before the edit is supported by the per-call read in the 2.1.284 binary but not observed on a peer.claude agents,--bg) is not run; its pass criteria are in the decision record and it needs the user to accept a workspace-trust dialog in a throwaway repository.autonotifications; making them needed-only needs a per-terminal sequence and an observed delivery first.Host evidence
Not applicable: no file under
evidence/hosts/is added or changed.Checklist
permissions: contents: read(none added or changed).gitleaksclean on the commit; the colour probe uses a non-credential dummy value); no new required secret was added.Not merged by the author: the user decides the merge.
🤖 Generated with Claude Code