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.