Skip to content

[AE-1999] tix --mini: narrow-pane reverse-chrono reader#1

Merged
gitpancake merged 5 commits into
mainfrom
feature/mini-pane-reader
May 27, 2026
Merged

[AE-1999] tix --mini: narrow-pane reverse-chrono reader#1
gitpancake merged 5 commits into
mainfrom
feature/mini-pane-reader

Conversation

@gitpancake

Copy link
Copy Markdown
Owner

Linear: https://linear.app/cartage/issue/AE-1999

Changed

  • New tix --mini flag: flat reverse-chrono list of non-terminal tickets across $TICKETS_DIR, ↑/↓ + PgUp/PgDn/Home/End nav, Enter→pager, pwt lane, q/Ctrl-C exit.
  • src/tix/mini.py (new, ~150 LOC): curses loop + pure build_rows() (filter done/cancelled, sort created desc).
  • Extracted open_in_pager() and pickup_ticket() to module scope in src/tix/tui.py so default tix and mini share one impl.
  • src/tix/__main__.py: routes --mini (composes with tix <project>); flag stripped after positional pop.
  • Tests under tests/test_mini.py for sort order, hide rules (incl. legacy title-case aliases), and CLI routing.

Preserved

  • Default tix behavior, key bindings, render hot paths, status frontmatter contract.
  • Invariant 1: mini reads frontmatter, never derives status writes.
  • Invariant 5: pickup goes through claude_argv() via the shared helper — no bare claude invocation.
  • Stdlib-only (no new deps); pyproject.toml unchanged.
  • Tickets missing created: fall back to fs birthtime (parity with tui.App.sort_within_group created mode).

Test plan

  • pytest -q passes (13 tests).
  • tix --mini in ≥20-col pane lists newest first; ↑/↓ moves; Enter opens via glow/$PAGER; q exits cleanly.
  • tix <project> --mini resolves project + launches mini.
  • p on a non-active ticket spawns wt <slug> lane (or wt --ralph for an epic).
  • Default tix (no --mini) behaves identically to pre-PR — Enter, p, all key bindings unchanged.
  • Pane <20 cols renders "pane too narrow" without crashing; keystrokes still accepted.

Module-level helpers so mini.py can share the exact pager fallback and
wt-spawn flow. App methods now thin wrappers; behavior unchanged.
Filters done/cancelled (case-insensitive over STATUS_META aliases),
sorts by `created` desc with id tiebreak. Reuses tui.Ticket + parse_created
for parity with tui's `created` sort mode.
`tix --mini` and `tix <project> --mini` both dispatch to the mini reader.
Project resolution unchanged — flag is stripped after the positional pop.
@gitpancake

Copy link
Copy Markdown
Owner Author

@claude review

@gitpancake gitpancake merged commit ad157ec into main May 27, 2026
3 checks passed
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