Skip to content

v0.10.0

Choose a tag to compare

@atomicstack atomicstack released this 05 May 01:16
· 139 commits to main since this release

highlights

  • make test 7× faster on cold cache, ~80× faster on warm cache (49s → 7s cold, 25s → 0.6s warm) via three layered fixes: pool tmux servers per test binary instead of spawn-per-test, drop gotmuxcc tracing from the default test env, cap go test -p at 4 to avoid the four integration packages all hammering tmux at once.
  • eliminated the load-induced flake set in the integration tests (TestFilterNarrowsSessionList, TestNavigationOpensSubmenuAndEscapeReturns, TestEscapeExitsFromRootMenu, etc.) by addressing the contention that caused them, not by bumping timeouts.
  • filter cursor migration to tea.View.Cursor: form text inputs now surface their cursor via Bubble Tea's first-class cursor API instead of in-string block rendering, fixing positioning in the prompt row and aligning with the rest of the v2 input model.

fixes

  • ui: respect noPreview in maxVisibleItems — maxVisibleItems reserved rows for an inline preview that viewVertical then refused to render, shrinking the tree's viewport and dragging the auto-selected cursor off the top in --no-preview configs.
  • cmdparse: replace golden_schemas.txt with schema-aware assertions — the previous full-output golden broke deterministically every time tmux added a command or flag; new assertions cover the commands the codebase actually consumes for completion.
  • resurrect: mock tmux fetch fns in TestRunAutoSaveCommandReturnsBlankWhenIconDisabled — the test was attempting real save+fetch against whatever tmux server was reachable from the test environment; under parallel make test load that hung for 5+ minutes per run.

performance

  • tmux: cut redundant tmux commands per backend poll — cache ShowOption results per (socket, option) for the binary's lifetime; skip ListSessionsFormat when no custom session label format is configured. Drops FetchSessions from 6 commands to 3 on the first cycle, cheaper still after.
  • testutil: pool one tmux server per test binary — sampling concurrent tmux processes during make test showed 11–13 servers alive at peak from cleanup-overlap stacking. New pool runs one server per package via sync.Once/TestMain and tears down only per-test sessions in cleanup. Tests that genuinely need an isolated server (cross-server save/restore round-trip) opt into StartIsolatedTmuxServer.

diagnostics

  • backend: emit poll.start / poll.done trace events — now visible in the JSON trace log, not only in the SQLite sink. Useful for tracing first-fetch latency under load.

ui polish

  • form text input cursors render via tea.View.Cursor, with positioning bound to the actual prompt row (f9d7e5b, 3a460f9, 104b621, f59deac, 6a3910c, f290cb5, 68161cc, 8c5233b, a472c52, ed56ff7).
  • attachFilterCursor clamping modernized; dead form-cursor path removed.