Skip to content

fix: tmux pane geometry, palette debug snapshot, and stale socket tests - #440

Merged
arzafran merged 6 commits into
mainfrom
fix/socket-test-regressions
Oct 19, 2026
Merged

arzafran merged 6 commits into
mainfrom
fix/socket-test-regressions

Conversation

@arzafran

Copy link
Copy Markdown
Member

Follow-up to the test triage in #437. These socket and palette tests were failing in the nightly. Most of the failures were outdated tests, and three were real bugs, fixed here.

App fixes

  • tmux compatibility reported the wrong pane geometry. pane_top came out 3 rows too high because pane frames are in window coordinates while the container starts below the titlebar. The window size was also roughly halved on Retina, because it was divided by the pixel cell size instead of the point size. pane.list now includes the container's x/y, and the tmux shim subtracts that origin and divides by the point cell size.
  • The debug palette snapshot only showed the first 20 rows, while the RPC allows 100. Tests asking for 80 rows never saw commands lower in the list, such as Rename Tab.
  • debug.shortcut.set (debug builds only) now accepts new_window, close_window and rename_tab. Without them the shortcut hint sync test could never pass.

Test updates

Each of these follows a change that was intentional, and each has its commit cited in a comment:

  • test_notifications.py:
    • The test now refers to surfaces by id; bare indexes were deliberately rejected.
    • It now selects new workspaces explicitly, since workspace.create no longer steals focus over the socket.
    • A notification for the focused panel is still recorded; only the system banner is suppressed. A unit test already covers that behavior.
  • test_review_diff_panel.py:
    • Untracked files are listed but don't count as diffable, so the test now checks diffable >= 1 and file_count >= 2.
    • The test now switches the shell to zsh first. On the CI runner's bash 3.2, the pasted comment text would otherwise run as commands.
  • Codex hook install: the stale entries now use the real older command form. Since fix: trust installed Codex hooks #326, ownership is an exact match, so a made-up line is correctly left alone.
  • Palette search tests:
    • open can rank either Open Folder or one of the per-app open commands first, and the test accepts either.
    • The palette now opens with > already typed.
    • The test now waits for the rows to fill in.
  • Agent screen detection: the fake agent now clears its approval prompt, the way a real one does.
  • CommandPaletteAllSurfacesUITests:
    • The test socket now lives in the runner's own temp dir; the sandboxed runner gets EPERM connecting to a socket under /tmp.
    • The backspace test now finds the palette row by its identifier instead of by title, so it no longer matches the sidebar row with the same title.

Seven tests_v2 files join the nightly list, and the backspace UI test comes off the skip list.

Still open

  • The Kitty OSC 99 checks in test_notifications.py still fail, because the pinned ghostty fork never dispatches OSC 99. That needs a fork commit.
  • Three palette UI tests and the workspace description UI test stay skipped.

All of the above passed in manual nightly runs on this branch: 39292783144 and 39294950284 for v2, 39297584258 and 39298963225 for UI.

…e socket/palette tests

tmux-compat list-panes printed a negative pane_top because pane frames are
window-relative while the container starts below the titlebar; pane pixel
frames are now offset by the container origin (added to pane.list) and
divided by the point-sized cell, not the pixel-sized one.

Tests follow deliberate contract changes: socket commands no longer steal
focus (workspace.create does not select), bare indexes are rejected,
focused-panel notifications are still recorded, untracked review files are
"New file" rows, Codex hook ownership is an exact match, palette per-app
open commands carry an app suffix. The fake agent in the screen-manifest test
now clears its approval prompt so the idle prompt can win. The command palette
UI class launches with a tag, the socket override and socket diagnostics, and
the saved-description label is found by identifier.
…ree stale palette/review tests

The debug command palette snapshot capped rows at 20 while the debug RPC accepts
up to 100, so tests asking for 80 rows never saw later commands. The palette
toggle opens in command mode with the > prefix, and the review test now runs
in zsh so pasted comments stay inert (the CI login shell, bash 3.2, has no
bracketed paste). Passing tests join the nightly list; the command palette UI
class prints client socket errors.
… let the debug shortcut setter rename window/tab actions

The sandboxed UI test runner gets EPERM connecting to sockets under /tmp. The
debug shortcut setter only knew focus and digit shortcuts, so the hint-sync
test could not rebind new_window, close_window and rename_tab.
…tte state on failure; add passing tests to the nightly
@arzafran
arzafran merged commit 693b163 into main Oct 19, 2026
12 checks passed
@arzafran
arzafran deleted the fix/socket-test-regressions branch October 19, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant