Skip to content

Enhance TUI console and tmux session management with error handling#6

Merged
anitoanto merged 14 commits intomainfrom
staging
Apr 3, 2026
Merged

Enhance TUI console and tmux session management with error handling#6
anitoanto merged 14 commits intomainfrom
staging

Conversation

@anitoanto
Copy link
Copy Markdown
Owner

This pull request introduces a major feature update to GitDirector, transforming it from a simple CLI tool into a fully interactive TUI application with advanced repository management, tmux session integration, and support for launching AI coding agents. The release also revises the command set (notably replacing add/remove with link/unlink), adds new commands (cd, console, autoclean), and overhauls the documentation to reflect these capabilities. Several new dependencies are introduced to support the TUI and tmux features.

The most important changes are:

Major Feature Additions

  • Added an interactive TUI dashboard (gitdirector console) for managing repositories with live status, filtering, sorting, and integrated actions (open tmux session, launch AI agent, etc.), using the textual and rich libraries. [1] [2] [3]
  • Introduced tmux session management: new cd command to open/switch to per-repo tmux sessions, and autoclean sessions to clean up stale sessions. [1] [2] [3]
  • Added support for launching AI coding agents (OpenCode, Claude Code, Copilot, Codex) from the TUI/dashboard. [1] [2]

Command Set and CLI Overhaul

  • Replaced add/remove commands with link/unlink, and updated all documentation, help, and code accordingly. Added new commands: cd, console, autoclean. Improved help output and usage documentation. [1] [2] [3] [4]
  • Rewrote list and pull commands for concurrent execution and richer output using rich tables and spinners. [1] [2]

Dependency and Packaging Updates

  • Added new dependencies: libtmux, textual, coolname, and pytest-asyncio for development. Updated version to 1.1.0. [1] [2] [3]
  • Updated Homebrew formula description to match new features.

Documentation

  • Overhauled the README.md to describe the TUI, tmux, AI agent launching, new commands, and installation requirements. [1] [2] [3]

These changes collectively make GitDirector a much more powerful and user-friendly tool for developers managing multiple git repositories.

anitoanto added 14 commits April 3, 2026 00:24
- Introduced `_alphanumeric_name` to sanitize repo names for tmux session names.
- Added `_make_session_name` to generate unique session names using a coolname slug.
- Implemented `list_repo_sessions` to retrieve existing tmux sessions for a repo.
- Created `create_tmux_session` to handle session creation with uniqueness checks.
- Added `kill_tmux_session` to facilitate session termination.
- Updated `open_in_tmux` to utilize the new session creation logic.

test(tui): add comprehensive tests for TUI components

- Created `test_tui.py` with tests for various TUI screens and components.
- Added tests for `GitDirectorConsole`, `ConfirmScreen`, `ActionMenuScreen`, and `RemoveSessionScreen`.
- Included tests for session management interactions and UI behavior.

chore(deps): update dependencies in lock file

- Added `coolname` package for generating unique session names.
- Updated `pytest-asyncio` to support both Python 3.9 and 3.10+.
- Included `backports-asyncio-runner` for compatibility with Python versions < 3.10.
…d update dependencies

- Updated test class names and methods in `test_cli.py` to reflect changes from add/remove commands to link/unlink commands.
- Adjusted mock manager patches and assertions accordingly.
- Modified `test_extras.py` to remove unnecessary imports and streamline code.
- Updated `uv.lock` to upgrade `click` to version 8.3.2, `gitdirector` to version 1.1.0, and `ruff` to version 0.15.9, along with other dependency updates.
Enhance TUI console and tmux session management with error handling
@anitoanto anitoanto merged commit 90a1b47 into main Apr 3, 2026
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