Files
tai/research/tui-framework-design/tmux-remove-popup-overlay.md
T
retoor 29c489e27a Standalone tai.py: native TUI framework, grouped classes, full suite green
- In-tai.py TUI framework (panels, compositor, z-layers, mouse, focus,
  VT screen, pty sub-terminals, widgets, animation) plus /demo, --demo,
  --demo-shot, tui.md docs, and research/tui-framework-design archive
- Focus safety: Tab/Shift+Tab always cycle, auto-focus prefers
  non-terminals, dialogs restore previous focus on close
- Native Consts/Install/Sandbox/Opencode/SysInfo classes in tai.py;
  module functions delegate so live patches apply; fixes 19 failures
- Retargeted 4 test patches to the real tai.* seams (assertions unchanged)
- Deleted tai_pkg/; tai.py is standalone stdlib-only (bare copy imports)
- AGENTS.md/README.md updated to the standalone architecture
- test_tai.py 320/320 OK, test_seal.py 16/16 OK
2026-10-10 23:45:12 +02:00

2.8 KiB

tmux: Remove popups and all the associated overlay machinery (commit)

Metadata

Field Value
Institute Molodetz Institute — Research & Retrieval Division
Subject tui-framework-design
Document type Source Dossier
Tier 1
Source title Remove popups and all the associated overlay machinery (they were the last user of it)
Source URL https://github.com/tmux/tmux/commit/34cd5da4e333a5be3cb62280432b3dc70f5e41dd.patch
Source publisher / author Nicholas Marriott (nicm), tmux project
Source type repository (commit)
Source date (published) 2026-09-21
Date researched 2026-10-10
Researched by tai (agent), model: Muse Spark, on behalf of retoor
Research method direct page fetch
Confidence High
Status Active

Summary

tmux deleted its entire popup/overlay subsystem (popup.c, 662 lines, plus overlay hooks across screen-redraw, tty, and menu code: -1661/+304 over 15 files). display-popup survives only as an undocumented compatibility command that opens a floating pane instead. Overlays as a special rendering path are gone; floating panes are now the one mechanism for anything that floats.

Key findings

  • Deleted: popup.c outright, plus overlay branches in screen-redraw.c, screen-write.c, server-client.c, tty.c, window.c, window-copy.c, cmd-display-menu.c, input.c, options-table.c, status.c, tmux.h, tmux.1, Makefile.
  • display-popup kept as an undocumented compat alias for opening a floating pane (flags kept: border, title, size, position).
  • Menus (cmd-display-menu.c, -486/+~100 region) were rewritten off the popup path onto panes in the same commit.
  • A companion open issue in the same result set reports popup repaint flicker when a background pane redraws an overlapping region — the exact failure mode a separate overlay path invites.

Pros / strengths

  • Primary evidence (the commit itself) from the most conservative codebase in this space; the direction is unambiguous and the diff size shows the overlay path was genuinely load-bearing complexity, not a flag.

Cons / limitations / caveats

  • Only the commit header, file stats, and the first diff hunks were read in this pass (full patch is ~82KB); floating-pane internals were not reviewed.
  • tmux's constraints (C, client/server, many terminals) differ from tai's; the lesson transfers, the code does not.

Relevance to tai

  • Decisive validation for the tai TUI shape: dialogs and floating terminals must be ordinary layers/panels with z-order in one compositor — never a second "overlay renderer" beside the main one.
  • tai's Dialog/QuestionDialog/Terminal-panel design follows directly: one panel class tree, one paint path, z decides visibility.

Changelog

Date Change
2026-10-10 Initial dossier created.