Skip to content

Releases: ayder/ghostcrt

v0.3.2

Choose a tag to compare

@ayder ayder released this 05 Oct 23:10
86f1a32

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

Choose a tag to compare

@ayder ayder released this 27 Sep 04:13
98f6475

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 --check pass.
  • 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

Choose a tag to compare

@ayder ayder released this 25 Sep 07:27
05eb597

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

Choose a tag to compare

@ayder ayder released this 15 Sep 11:28
b9c8e3c

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

Choose a tag to compare

@ayder ayder released this 12 Sep 23:39

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

Choose a tag to compare

@ayder ayder released this 11 Sep 17:58

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
ghostcrt

Requires 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

Choose a tag to compare

@ayder ayder released this 10 Sep 03:01

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
ghostcrt

Requires 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.