<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0ppij.git/zellij-server/src/unit/pty_tests.rs, branch main</title>
<subtitle>a sl0p.foo repository</subtitle>
<id>https://git.sl0p.foo/sl0ppij.git/atom/zellij-server/src/unit/pty_tests.rs?h=main</id>
<link rel='self' href='https://git.sl0p.foo/sl0ppij.git/atom/zellij-server/src/unit/pty_tests.rs?h=main'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/'/>
<updated>2026-07-08T13:57:51Z</updated>
<entry>
<title>perf: foreground pane-command discovery without scanning the whole process table (#5324)</title>
<updated>2026-07-08T13:57:51Z</updated>
<author>
<name>Chris Frost</name>
<email>chris.frost@stellar.org</email>
</author>
<published>2026-07-08T13:57:51Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=c632605c360f333324ef42dd9b6524cd4328884c'/>
<id>urn:sha1:c632605c360f333324ef42dd9b6524cd4328884c</id>
<content type='text'>
* build(deps): bump sysinfo to 0.37 for scan-free partial process refresh

Bump it to pull in sysinfo 0.37's change "Linux: greatly improve partial
processes retrieval", so that refreshing a specific set of pids
(ProcessesToUpdate::Some) no longer walks the entire /proc tree.
This makes the existing get_cwd/get_cwds polling O(panes) instead of
O(host processes) and unblocks doing the same for foreground-command discovery.

* perf: discover foreground pane commands w/o scanning all processes

Foreground command discovery was reading information about every process
on the host, on each pane/tab creation and on every periodic poll. On hosts
with many processes (eg, 50k) this stalled pane creation for tens of seconds
and overran the action-completion timeout.

Replace that O(host processes) lookup with an O(panes) lookup. Instead
of looking up the parent pid of every process to find the child, get
the foreground process-group leader's pid from a call to tcgetpgrp on
the pane's controlling terminal. When the leader is the shell itself
(idle prompt or a command sharing the shell's group without job control)
the pane is omitted and the caller falls back to the shell command,
matching prior behavior; with job control on it now reports the true
foreground job instead of possibly a background one.

This changes the paths for Linux, macOS, and BSD. It leaves Windows unchanged.

* refactor(os_input): extract apply_post_command_hook helper

The command -&gt; run_command_hook -&gt; trim/split pipeline was duplicated between
the #[cfg(not(unix))] get_all_cmds_by_ppid and the unix get_foreground_cmds.
Extract a single apply_post_command_hook helper and call it from both sites,
routing the hook-failure fallback through the project's non_fatal() logging
idiom (CONTRIBUTING.md "Logging errors") instead of log::error!.

* review: simplify tcgetpgrp locking, trim comments, drop changelog entries

- Remove the lock-drop dance and its TOCTOU caveat from tcgetpgrp,
  to make it mirror tcdrain
- Prune AI comments
- Remove CHANGELOG entries</content>
</entry>
<entry>
<title>Some idle CPU and disk/io fixes, new CommandChanged plugin Event (#5063)</title>
<updated>2026-04-17T12:08:48Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2026-04-17T12:08:48Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=aa29cbaf6631af0afca6aae427a97b3e478393b3'/>
<id>urn:sha1:aa29cbaf6631af0afca6aae427a97b3e478393b3</id>
<content type='text'>
* initial implementation

* fix mouse cpu spam

* prevent excess metadata write and prune sessions on startup

* consolidate CommandChanged and PaneCommandChanged

* tests

* rustfmt

* add pr</content>
</entry>
</feed>
