Releases: codeime/Fastab
Release list
v0.0.5
- change: release unused parsed spec trees after a 10-second grace, including when the input is cleared, executed, or its terminal disconnects. Re-entering a command reloads its specs on demand with the same suggestion content and order.
- change: cooperatively cancel superseded completions and their scripts, reuse the engine, and prevent cancelled work from publishing incomplete cache or generator state.
- change: reduce temporary spec-loading allocations with streamed snapshot hashing and shared-option fingerprints; add numeric resource diagnostics and persistent replay scenarios for release and cancellation checks.
- fix: history indexing and pinned developer specs no longer keep unrelated bundled trees active. Release every cached tree for the same file, and preserve its pending deadline when LRU eviction removes only one of those trees.
- fix: preserve release notifications across cancelled session switches, allow expiry under a busy control queue, and remove unreachable trees after explicit replacement. Settings refreshes no longer resubmit input from an ended session.
- fix: invalidate cached history argument indexes when aliases or the shell change, and reject late indexes built for another context.
- fix: bound xterm Accessibility caret searches with one shared deadline and per-window failure backoff; reject stale focus/window results and clear unavailable caret positions.
Install
-
Download
Fastab-arm64.dmg, open it, and drag Fastab to Applications. -
This build is ad-hoc signed, so macOS Gatekeeper will quarantine it. After
copying to Applications, clear the quarantine flag once:xattr -dr com.apple.quarantine "/Applications/Fastab.app" -
Launch Fastab, open Fastab Settings, and click Grant
Accessibility. Follow the drag guide in System Settings -> Privacy &
Security -> Device Control and Data Access (named Accessibility on macOS 26
and earlier). The input method is optional and can be installed in Settings. -
Reload your shell:
exec $SHELL
This DMG is ad-hoc signed and is not notarized. Gatekeeper will block it until the quarantine flag is cleared.
v0.0.4
- change: a command group that points at another spec file loads when the cursor enters it. The gcloud menu keeps each group's stub name and description; entering
gcloud computeparsescompute.json, and groups that were not entered stay on disk.gitcompletions stay the same. - change: suggestion lists and subcommand entry share the cached spec instead of copying the tree. Names, order, hidden rows, and dependency priority 75 stay the same. Accepting a group from the first menu inserts that stub, so a trailing space and a required-argument hint appear after the group is entered.
Install
-
Download
Fastab-arm64.dmg, open it, and drag Fastab to Applications. -
This build is ad-hoc signed, so macOS Gatekeeper will quarantine it. After
copying to Applications, clear the quarantine flag once:xattr -dr com.apple.quarantine "/Applications/Fastab.app" -
Launch Fastab, open Fastab Settings, and click Grant
Accessibility. Follow the drag guide in System Settings -> Privacy &
Security -> Device Control and Data Access (named Accessibility on macOS 26
and earlier). The input method is optional and can be installed in Settings. -
Reload your shell:
exec $SHELL
This DMG is ad-hoc signed and is not notarized. Gatekeeper will block it until the quarantine flag is cleared.
v0.0.3
- change: keep AI Settings focused on enablement, provider configuration and connection testing; removing the session diagnostics card and Git status control does not itself change saved consent or Git-sharing values. Anonymous, bounded AI aggregates remain available through the existing diagnostics command at DEBUG level.
- fix: use the actual Accessibility insertion point in Otty 1.2+, retain IME support for older or unknown versions, and discard stale focus/caret updates. Clear old coordinates and key interception when the caret is unavailable, and keep IME state reads off the UI thread; installed-app verification is pending.
- change: simplify the gold AI icon to one primary sparkle and one accent, and use the same shape for recommendations and loading/status indicators
- fix: allocate the AI candidate budget after local ranking while retaining provenance checks before deduplication
- feat: learn argument preferences within the current directory and parser argument slot, independently of global command preferences
- fix: validate bounded local Git and history context before reusing recommendations while preserving existing Git-sharing consent
- feat: cache validated recommendation IDs in memory for 15 seconds, with a 64-entry limit and context, settings and navigation invalidation
- fix: reply to repeated input-method caret requests even when the cursor has not moved, restoring caret state after session changes or desktop restarts while ignoring background terminal windows
- fix: allow horizontal trackpad scrolling through long completion names and argument hints; manual scrolling pauses the row's marquee and rejects late AI recommendations without changing the current selection or order
- fix: Up from the first suggestion wraps to the last by default, while respecting explicit wrap and shell-history navigation preferences
- change: organize AI settings into enable, basic and always-expanded advanced cards; automatically save completed edits, including when leaving or closing settings
- fix: keep API key drafts bound to their service address and finish queued connection tests with clear feedback when settings cannot be saved
- fix: persist Fastab input-method palette registration on startup without automatically opening macOS Keyboard settings
- feat: include current input, Git branch and bounded recent command history in Jev recommendations, with updated data-use notices
- fix: preserve SQLite's cross-process locks while restricting database permissions, preventing intermittent SIGBUS crashes during shell initialization
- change: store Jev API keys as plaintext in local SQLite with user-only file permissions and masked saved values; do not read or migrate old Keychain entries
- feat: enable AI recommendations for more verified Git, Cargo and Homebrew subcommands and options
- change: Ctrl-K shows full argument details while the normal footer stays on one line
- fix: silently retain local suggestions when AI chooses not to reorder them, times out or encounters a temporary failure
- fix: native Edit menu actions now use GPUI's action table, preventing the Select All deadlock and preserving keyboard editing shortcuts
- fix: restore a previously chosen input method on launch; serialize install and removal without blocking async workers or changing installation state during status checks
- change: AI settings use colored connection results, the standard settings switch and clear provider selection; a short data-use notice replaces the separate consent toggle
- fix: saved API keys show a masked placeholder without loading the secret into the input; background presence checks discard stale results and wait for pending credential writes
- fix: AI credential readiness no longer restarts local completion or replaces existing suggestions with the engine loading indicator
- feat: show a gently fading AI icon at the bottom left of the completion popup during requests, while local suggestions remain usable
- fix: Jev settings pause requests immediately and save in the background, without blocking input on file locks; stale saves cannot replace newer settings
- fix: failed AI saves remain retryable while AI stays paused; newer edits always take precedence over pending saves
- fix: ignore delayed terminal focus events after switching apps and bound Accessibility queries; settings credential waits now time out without losing the key draft, while runtime reads retain late results
- fix: Tab navigation now reaches AI inputs, actions and theme selectors, skipping disabled controls
- change: simplify AI setup and move model, endpoint details and saved profiles into advanced settings
- feat: test the current Jev key, model and endpoint with a fixed example and clear connection-error feedback
- fix: remote IPC reconnect no longer stops permanently when an in-flight outbox frame still holds budget accounting (
BusyvsStopped) - fix: intercepted-key replay no longer blocks the PTY main loop for up to 5s; ordinary input and desktop Inserts stay ordered behind pending keys without a barrier wait
- fix: generator subprocess cleanup stays bounded after kill; unfinished children are reaped in the background instead of hanging
waitor leaving zombies - fix: enabling Jev AI recommendations fails closed with a clear settings status when the bundled specs-ir public baseline pins do not match
- fix: CI
cargo fmt --checkpasses across the workspace - change: terminal grid row-cache reclaim uses hysteresis so short-lived resizes do not thrash capacity
- feat: opt-in Jev completion recommendations (settings + provider profiles), promoting one existing candidate when local results are ready
- fix: Jev API key entry handles ASCII keys directly without macOS text composition; pasted keys accept surrounding whitespace, and blank or invalid pastes preserve the previous value
- fix: unchanged settings input no longer pauses Jev, and failed credential or configuration saves retain the key draft for retry
- change: Jev settings are their own Settings page
Install
-
Download
Fastab-arm64.dmg, open it, and drag Fastab to Applications. -
This build is ad-hoc signed, so macOS Gatekeeper will quarantine it. After
copying to Applications, clear the quarantine flag once:xattr -dr com.apple.quarantine "/Applications/Fastab.app" -
Launch Fastab, open Fastab Settings, and click Grant
Accessibility. Follow the drag guide in System Settings -> Privacy &
Security -> Device Control and Data Access (named Accessibility on macOS 26
and earlier). The input method is optional and can be installed in Settings. -
Reload your shell:
exec $SHELL
This DMG is ad-hoc signed and is not notarized. Gatekeeper will block it until the quarantine flag is cleared.
v0.0.2
- fix: completion kinds match the previous parser. Once a positional argument is consumed, or after
--, subcommands leave the list, so fuzzy search no longer offers unrelated commands such asmergeforgit check m - fix: the app icon is the previous dark tile again, with the green prompt and completion list painted into
icon.icns. The ochre gradient and the layered icon catalog are gone, so macOS 26 no longer shows a plain background - fix: granting Accessibility no longer quits the app. The drag row's name label was released while the card was still showing it
- fix: the Accessibility grant card centers the icon with its name and the title with the close button, and animates an arrow toward the list
- fix: display-language chips use a static option id so the settings window compiles
- change: the DMG no longer stamps a custom volume icon
- change: shell history suggestions use the same recent window as the on-disk history database
- change: the first-run permission page can switch display language before the rest of settings is available
- change: that language control sits below the window title bar so the click reaches the page
- docs: how to uninstall Easy Complete before installing Fastab
Install
-
Download
Fastab-arm64.dmg, open it, and drag Fastab to Applications. -
This build is ad-hoc signed, so macOS Gatekeeper will quarantine it. After
copying to Applications, clear the quarantine flag once:xattr -dr com.apple.quarantine "/Applications/Fastab.app" -
Launch Fastab, open Fastab Settings, and click Grant
Accessibility. Follow the drag guide in System Settings -> Privacy &
Security -> Device Control and Data Access (named Accessibility on macOS 26
and earlier). The input method is optional and can be installed in Settings. -
Reload your shell:
exec $SHELL
This DMG is ad-hoc signed and is not notarized. Gatekeeper will block it until the quarantine flag is cleared.
v0.0.1
First Fastab release. Versioning starts here; earlier Easy Complete tags are retired.
Fastab is a macOS terminal autocomplete app. Completions follow the caret in a native overlay.
- Overlay and settings are native GPUI views. Completions do not enter a WebView, and the app ships no JavaScript runtime: specs compile to typed IR or named Rust adapters.
- Product identity is Fastab only:
Fastab.app, bundleapp.fastab, CLIftab, PTYfastabterm, URL schemefastab://. - Fastab can sit beside Easy Complete, Fig, or Amazon Q. Install, uninstall, IME, HIToolbox, and data dirs are Fastab-only. The same terminal session cannot run two completion desktops;
ftab initstands down when another PTY already wraps the shell. - Telemetry UI is hidden and reporting stays unconfigured. Completions stay on-device.
- The Apple Silicon DMG is ad-hoc unsigned. After copying to
/Applications, clear Gatekeeper quarantine withxattr -dr com.apple.quarantine "/Applications/Fastab.app". Accessibility is Fastab's own TCC identity (app.fastab); grant it from Fastab Settings.
Install
-
Download
Fastab-arm64.dmg, open it, and drag Fastab to Applications. -
This build is ad-hoc signed, so macOS Gatekeeper will quarantine it. After
copying to Applications, clear the quarantine flag once:xattr -dr com.apple.quarantine "/Applications/Fastab.app" -
Launch Fastab, open Fastab Settings, and click Grant
Accessibility. Follow the drag guide in System Settings -> Privacy &
Security -> Device Control and Data Access (named Accessibility on macOS 26
and earlier). The input method is optional and can be installed in Settings. -
Reload your shell:
exec $SHELL
This DMG is ad-hoc signed and is not notarized. Gatekeeper will block it until the quarantine flag is cleared.