Repository navigation
feat(pty-proxy): window title follows child process - #4447
Merged
Merged
Conversation
Contributor
[Medium impact] Appears safe to merge; a delayed title can still briefly show a finished command. Findings
SummaryMakes terminal titles follow the childβs foreground program.
markovejnovic confirmed that leaderless pipelines intentionally keep their old title to match tmux without scanning processes. Child-set titles also intentionally last for the session. Greptile withdrew both earlier objections. Code review only; tests were not run. Reviews (8) Β· Last reviewed commit: "test(common): kill the renamed sleep fro..." Β· Reviewed by Greptile |
markovejnovic
force-pushed
the
feat/handle-osc-1-2
branch
from
October 20, 2026 02:03
bcce1ad to
62f9eac
Compare
This was referenced Oct 22, 2026
markovejnovic
changed the base branch from
main
to
refactor/pty-proxy-emulator
October 22, 2026 00:26
atuin-bot
force-pushed
the
refactor/pty-proxy-emulator
branch
from
October 22, 2026 00:32
95ab7f0 to
f86a54c
Compare
atuin-bot
pushed a commit
that referenced
this pull request
Oct 22, 2026
`screen.rs`'s `Parser` is the emulator that snapshots the screen, and shares its name with `markers::Parser` (and with the stream parser #4447 adds). It is now `Emulator`, with `EmulatorOptions`, `spawn_emulator` and an `atuin-pty-emulator` thread. No behaviour change. Tested locally on macOS: clippy, `cargo nextest run -p atuin-pty-proxy`, and the pty-proxy e2e suites. Bash's login case in `e2e_pty_proxy_init` fails, the same way on main. Drafted with Claude Code.
markovejnovic
force-pushed
the
feat/handle-osc-1-2
branch
from
October 22, 2026 00:53
4f0b643 to
ac62a1b
Compare
markovejnovic
force-pushed
the
feat/handle-osc-1-2
branch
from
October 22, 2026 01:49
ac62a1b to
72d6f47
Compare
markovejnovic
changed the base branch from
main
to
refactor/pty-proxy-one-parser
October 22, 2026 01:49
markovejnovic
force-pushed
the
feat/handle-osc-1-2
branch
3 times, most recently
from
October 22, 2026 03:42
7c43588 to
2c8f317
Compare
atuin-bot
force-pushed
the
refactor/pty-proxy-one-parser
branch
from
October 22, 2026 04:02
8ad26fa to
af714d0
Compare
markovejnovic
marked this pull request as ready for review
October 22, 2026 04:10
markovejnovic
force-pushed
the
feat/handle-osc-1-2
branch
from
October 22, 2026 04:14
ebe84d1 to
78dc5d1
Compare
Member
Author
|
/merge |
Collaborator
|
Landed as e065659. GitHub shows this merged once it reaches main. |
Under pty-proxy, a terminal that names the program running in it finds the proxy in the foreground of its pty, so every tab says `atuin`. The proxy now titles the terminal after the program in the foreground of its own pty, much as tmux's `automatic-rename` names windows via `OSC 0`. ## Behaviour changes - Terminals that never showed process names get them now, unless the shell titles the terminal itself. - After a program sets its own title, the terminal keeps it for the rest of the session. This is standard `OSC 0` behavior. - Inside tmux the proxy's title becomes the pane title, which the default `status-right` shows in place of the hostname.
atuin-bot
force-pushed
the
feat/handle-osc-1-2
branch
from
October 22, 2026 04:25
78dc5d1 to
e065659
Compare
atuin-bot
pushed a commit
that referenced
this pull request
Oct 22, 2026
### Bug Fixes - *(ai)* Import IntoStaticStr from strum_macros, not strum ([#4480](#4480)) - *(ai)* Improve detection of git repositories ([#4450](#4450)) - *(client)* Resolve relative config paths beside config.toml, not the cwd ([#4479](#4479)) - *(config)* Don't print errors twice ([#4501](#4501)) - *(daemon)* Fetch the server's capabilities until a fetch succeeds - *(daemon)* Spare a stale pidfile's PID when evicting ([#4512](#4512)) - *(daemon)* Handle daemons not spawned by atuin ([#4516](#4516)) - *(output)* Keep quoted words together in output search ([#4502](#4502)) - *(packfile)* Load only the records inside a manifest's range - *(pty-proxy)* Standalone init with `atuin pty-proxy init` ([#4449](#4449)) - *(pty-proxy)* Wait for input on a non-blocking inherited stdin ([#4486](#4486)) - *(pty-proxy)* Don't re-exec shells running commands from a string or file ([#4414](#4414)) - *(search)* Don't panic when copying with no results ([#4426](#4426)) - *(server)* Let `ATUIN_*` environment variables override server.toml ([#4456](#4456)) - *(update)* Accept ATUIN_GITHUB_TOKEN ([#4262](#4262)) - Remove duplicated word in the no-history stats message ([#4451](#4451)) - Error printing in `?` handler ([#4448](#4448)) - Normalize relative gitdir paths in worktree resolution ([#4506](#4506)) - Upgrade regressions found in release QA ([#4519](#4519)) ### Documentation - Fix ctrl_n_shortcuts default value ([#4458](#4458)) - List all history list --format variables ([#4460](#4460)) - Fix the --reverse default for history list ([#4472](#4472)) - Mention December default in wrapped --year help ([#4476](#4476)) ### Features - *(common)* AbsPath and AbsPathBuf, Path and PathBuf checked to be absolute ([#4481](#4481)) - *(common)* Find a process's cgroup under cgroup v1 and v2 ([#4513](#4513)) - *(daemon)* Run the daemon as a launchd agent on macOS ([#4517](#4517)) - *(pty-proxy)* Window title follows child process ([#4447](#4447)) - *(secrets)* Keep HashiCorp tokens out of history ([#4445](#4445)) ### Miscellaneous Tasks - Give mono its own nixfmt step and scope atuin's to atuin/ - Say a /merge's landed commit gets CI on main - Rebuild the apt .deb cache for Ubuntu 24.04 ([#4504](#4504)) - Remove the benchmarks ([#4511](#4511)) ### Performance - *(common)* Compile the vendor regexes once ([#4485](#4485)) - *(common)* Drop the tree watcher's file-id cache ([#4492](#4492)) - *(common)* Release a line reader's buffer at the end of the file ([#4494](#4494)) - *(common)* Keep no tree watcher entry for a rejected file ([#4493](#4493)) - *(daemon)* Warm up only a resumed session's unanswered calls ([#4490](#4490)) - *(packfile)* Compress packs in one shot ([#4484](#4484)) ### Refactor - *(daemon)* Managed daemon service with multiple backends ([#4488](#4488)) - *(daemon)* Move daemon startup into the service module ([#4503](#4503)) - *(daemon)* Keep where the daemon listens behind service::address ([#4514](#4514)) - *(daemon)* Take up the daemon's socket in SocketHolder, not Backend ([#4515](#4515)) - *(deps)* Bump clap_complete_nushell from 4.6.0 to 4.6.2 ([#4473](#4473)) - *(deps)* Bump clap_complete from 4.6.9 to 4.6.11 ([#4396](#4396)) - *(deps)* Bump ratatui from 0.30.0 to 0.30.2 ([#4474](#4474)) - *(deps)* Bump certifi from 2025.11.12 to 2026.10.19 in /docs in the uv group across 1 directory ([#4500](#4500)) - *(pty-proxy)* Run on tokio with the parser on its own runtime ([#4482](#4482)) - *(pty-proxy)* Forward captures to the daemon on the proxy's runtime ([#4487](#4487)) - *(pty-proxy)* Rename the screen's parser to Emulator ([#4510](#4510)) - *(pty-proxy)* Migrate output parsing to vte ([#4518](#4518)) ### Testing - *(daemon)* Run the output index tests under rstest ([#4496](#4496))
1 task
1 task
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.
Under pty-proxy, a terminal that names the program running in it finds the proxy in the foreground of its pty, so every tab says
atuin. The proxy now titles the terminal after the program in the foreground of its own pty, much as tmux'sautomatic-renamenames windows viaOSC 0.Behaviour changes
OSC 0behavior.status-rightshows in place of the hostname.