Releases: ayder/ghostcrt
Release list
v0.3.2
Ctrl+O release/recapture now preserves Ghostty's negotiated pixel mouse coordinates. Host-group clicks select their group and terminal clicks focus their pane instead of hitting the top menu. Compact focus styles also follow each theme's cursor style, fixing StyleValueError for themes such as Nord and Catppuccin.
GhostCRT is bumped to 0.3.2 and pins the tested ghostty-textual 0.0.5 wheel with pyghostty exactly 0.1.3. The lock preserves all unrelated package versions, and the changelog and compatibility documentation describe the update.
Validation: the full local macOS ARM64/Python 3.12 gate passes 433 tests with eight existing optional SSH-server skips, Ruff, locked synchronization, wheel/source builds, and fresh installed-wheel CLI/native/widget smoke. Regression proof includes all 21 built-in themes and raw native mouse reports through Textual's parser and actual host-group/terminal routing. Both regression test/fix pairs remain unsquashed.
Hosted Linux/macOS and Python 3.14 matrix jobs, including the Linux-only dependency audit, remain for CI. A live SSH server was not configured for the eight optional tests.
v0.3.1
Upgrade GhostCRT to 0.3.1 and pin the published ghostty-textual v0.0.4 wheel for faster styled output, selection, and hyperlink rendering.
The library now defers feed rendering through _flush_frame, which collided with GhostCRT's timer callback and bypassed its 60 Hz batching. Rename the consumer callback to _flush_throttled_frame so output and scrolling continue to share one frame timer. Add regression coverage for output across event-loop turns, forced refresh, reconnect/reset, and synchronized-output release/timeout.
Update the lockfile, installation instructions, and changelog. Include a reproducible GhostCRT rendering benchmark and adoption report; local synthetic measurements reduced styled/alternating-color rendering CPU time by roughly 36–52%, with plain output essentially unchanged.
Validation:
- Published v0.0.4 wheel SHA-256 verified against the library handoff and lockfile; Python sources match the reviewed performance candidate.
- Full consumer suite: 362 passed, 8 skipped (local SSH server/sshpass integration tests).
- Ruff and
git diff --checkpass. - 0.3.1 wheel and source distribution build successfully; isolated installed-wheel smoke checks cover CLI version, deferred rendering, reset, and unmount.
v0.3.0
Summary
Release 0.3.0 improves the terminal layout and host-management workflow. Menus now use arrow-key selection with synchronized top-level highlights and visibly disabled actions. Compact controls, single-row tabs, consistent selection markers, and contextual footer hints preserve terminal space while following the selected Textual palette.
- Show a host drawer on narrow terminals and preserve host selection during filtering.
- Group host fields into connection, authentication, and collapsible advanced settings; improve filter and vault spacing.
- Add Clone selected with copied settings and vault profile, plus an unused suggested alias.
- Require an OK / Cancel confirmation with host details before deletion from either the menu or editor.
- Replace Ctrl+] with Ctrl+T for returning to Hosts and display Ctrl+H Help in the footer.
- Bump package and lockfile to 0.3.0; update release notes and documentation.
Validation
- Full pytest suite: 355 passed, 8 skipped (optional SSH integration tests).
- Ruff and git diff whitespace checks passed.
- Locked dependency check passed.
- Built source distribution and wheel; checked wheel version, packaged stylesheet, and terminal emulator smoke test using the existing environment dependencies.
- Inspected rendered layouts and tested menu navigation, host selection, and 80-column/120-column behavior.
v0.2.2
Summary
First connections using a vault password disconnected with no host-key prompt because sshpass exits on unknown host keys. Run a password-free OpenSSH verification connection in the session tab before starting sshpass, so users can accept or reject the fingerprint and then continue with their saved password.
Preserve OpenSSH host-key policy and the selected SSH config. Rejected or changed keys and cancelled prompts stop the connection. Saved-password sessions make one additional verification connection.
Bump the package and lockfile to 0.2.2, update the changelog and installation examples, and add a local Docker SSH fixture with regression tests for the real connection and tab interaction.
Document in AGENTS.md that repository pushes and pull requests must use the ayder GitHub account.
Validation
- Full suite: 349 tests passed, including 8 real OpenSSH/sshpass integration tests against an isolated Docker SSH server.
- Version bump: import/version tests passed and CLI reports 0.2.2.
- Ruff and git diff checks passed.
- Built the 0.2.2 wheel and source distribution.
v0.2.1
Fast scrollback currently rebuilds every visible terminal cell for each wheel event, which can stall the UI; multiline paste is silently rejected when the remote application has not enabled bracketed paste. Session tabs also lack a close control.
This release batches terminal frame refreshes, adds a draggable history scrollbar and a close control to each session tab, and supports multiline paste with normal terminal line endings. Exited sessions close immediately; closing running or connecting sessions through the tab, Ctrl+W, or the Session menu requires confirmation. Ctrl+Q also confirms before disconnecting live sessions, with Cancel focused by default.
The package and lockfile are bumped to 0.2.1, and the changelog and installation instructions are updated. The existing changelog test now checks its original 0.2.0 entry so newer releases can be added.
ghostcrt 0.2.0
ghostcrt 0.2.0 adds password profiles and fixes the group picker.
Changes
- Vault password profiles: store a password once under a profile id and pick it per host from the host editor dropdown or the Vault menu. Vault files are now format 2, which 0.1.0 cannot open; existing vaults are migrated on first change.
- Group picker: Create/Choose now honours a highlighted group when the name box is empty, and a cancelled picker warns that the host was not saved instead of dropping it silently.
Install
uv tool install https://github.com/ayder/ghostcrt/releases/download/v0.2.0/ghostcrt-0.2.0-py3-none-any.whl
ghostcrtRequires Python 3.12+, OpenSSH, and macOS 13+ or glibc Linux 2.27+ on x86_64 or ARM64. Install sshpass to use stored SSH passwords.
Validation and licensing
297 tests, lint, package build and dependency audit run in CI on Linux and macOS with Python 3.12 and 3.14. Licensed under GNU GPL version 3 only (GPL-3.0-only). The wheel and source distribution are attached, with SHA256SUMS for both artifacts.
v0.1.0 - Initial release
First public release of ghostcrt, a Ghostty-powered terminal UI for managing SSH connections.
Features
- Tabbed interactive SSH sessions with Ghostty terminal emulation, scrollback, and text selection.
- Grouped SSH hosts, filtering, and in-app configuration editing.
- An encrypted password vault using Argon2id and AES-256-GCM, with password delivery through a file descriptor.
- Custom SSH configs, reconnect handling, multiple identity files, forwarding, and ProxyCommand support.
- Textual themes applied to the interface and terminal palette.
Install
uv tool install https://github.com/ayder/ghostcrt/releases/download/v0.1.0/ghostcrt-0.1.0-py3-none-any.whl
ghostcrtRequires Python 3.12+, OpenSSH, and macOS 13+ or glibc Linux 2.27+ on x86_64 or ARM64. Install sshpass to use stored SSH passwords. The Ghostty native library is supplied by the dependencies; no native compilation is needed on supported platforms.
Validation and licensing
The project includes a 228-test suite covering vault handling, host edits, terminal integration, and process cleanup, plus lint, package-build, dependency-audit, and clean-install checks.
All four GitHub CI jobs passed on Linux and macOS with Python 3.12 and 3.14.
Licensed under GNU GPL version 3 only (GPL-3.0-only). The wheel and source distribution are attached, with SHA256SUMS for both artifacts.