Releases: Abrar118/QuickDev
v0.3.2 — kitty terminal support (Linux)
Highlights
- kitty terminal support on Linux.
quickdev launchnow opens a single kitty window with one tab per configured terminal — each tab gets its own working directory and startup command — via a generatedkitty --sessionfile. Nokitty.confchanges or remote control required. - kitty is auto-preferred on Linux. When kitty is installed, auto-detect chooses it first (ahead of Ptyxis windows and gnome-terminal tabs). Set
emulator = "kitty"to force it explicitly, or omit for auto-detect. Single kitty windows are also supported as a fallback.
Security
- Terminal tab titles (which can originate from a shared
.quickdev.toml) are sanitized of control characters so they cannot inject additional directives into the generated kitty session file.
Other
kittyis now a recognized value for theemulatorsetting (ghostty|terminal|gnome-terminal|ptyxis|kitty).- Because kitty is not single-instance, QuickDev skips the emulator-readiness wait for it, so launches are not delayed.
Full changelog: v0.3.1...v0.3.2
v0.3.1
Linux terminal tabs 🐧
Fixes the Linux side of quickdev launch tabbing: gnome-terminal now opens a project's terminals as tabs in one window, each tab in its own directory running its own command — resolving the v0.3.0 limitation where Linux terminals could only open as separate windows.
What's fixed / new
- Linux · gnome-terminal: one window, N tabs via
gnome-terminal --load-config— each tab starts in its own working directory and runs its own command. Used when you select it explicitly, or when it's the only supported terminal installed. - Explicit terminal selection: the
emulatorsetting now accepts"gnome-terminal"and"ptyxis"(alongside"ghostty","terminal", and auto-detect). - Linux · Ptyxis & Ghostty: open one window per terminal (each with the correct directory + command). Their CLIs can't carry per-tab directory+command, so choose
gnome-terminalfor a single tabbed window. Auto-detect still prefers Ptyxis. - macOS & Windows: behavior unchanged; explicitly selecting a Linux-only terminal there returns a clear error.
- Launch failures fall back to per-terminal windows rather than failing.
Notes
- 154 tests; CI green on macOS, Linux, and Windows.
Changelog: #15
v0.3.0 — Terminal tabs
Terminal tabs 🗂️
quickdev launch now opens a project's terminals as tabs in one window instead of a pile of separate windows — per platform, with graceful fallback to windows when tabbing or permissions aren't available.
What's new
- macOS · Ghostty (≥1.3): drives Ghostty's native AppleScript API — one window, one tab per terminal, each starting in its configured directory with its command run in a live shell. Prompts once for the Automation permission; falls back to separate windows if denied.
- macOS · Terminal.app: preference-aware — auto-tabs when
AppleWindowTabbingMode = always(offers to enable it for you), otherwise drives ⌘T via System Events. - Linux: prefers Ptyxis (
--tab) when installed; gnome-terminal still supported. - Windows:
wttabs (unchanged). - Automation failures never report phantom success — a denied permission or script error cleanly falls back to opening windows.
Notes
- Known limitation: gnome-terminal's programmatic
--tabcan still open separate windows in some sessions (Wayland/X11 + D-Bus timing). Ptyxis is the recommended Linux terminal. - 138 tests; CI green on macOS, Linux, and Windows.
Changelog: #11
v0.2.0
QuickDev v0.2.0 brings cross-platform application discovery, a new capture command, project diagnostics, and a major internal refactor with cross-platform CI. Everything since v0.1.1 (PRs #1–#9).
New features
- Cross-platform
addapp discovery (#9) — the interactivequickdev addpicker now discovers installed apps on Linux (XDG.desktopfiles) and Windows (Start Menu.lnkshortcuts), not just macOS. Discovered launch args (Flatpakflatpak run …, Snap, SquirrelUpdate.exe --processStart …) are carried through and saved to the config. quickdev capture(#7) — snapshot the macOS GUI apps you currently have running and add the selected ones into the project's.quickdev.toml, soquickdev launchcan reopen them (--allor interactive multi-select).- Diagnostics & inspection (#5) — a single liveness notion (project path +
.quickdev.tomlboth exist) backs a new set of commands:quickdev prune— remove global-index registrations whose project path or.quickdev.tomlno longer exists.quickdev doctor(+--fix) — report global-config / fzf / per-project health;--fixcreates a missing global config, prunes dead registrations, and normalizes project configs.quickdev validate— check the current project's config (terminal paths stay within root, supported emulators, app paths exist, known placeholders); exits non-zero on errors.quickdev list --missing/list --json— filter to unhealthy projects, or emit a JSON array; the default table now distinguishes path missing from .quickdev.toml missing.
quickdev config(#4) —config set|get|unset emulator <ghostty|terminal>with validation.- App-arg placeholders (#4) —
{root},{config},{name},{cwd}substituted in application args at launch (a bare"."still means project root). launch --dry-run(#2) — preview what would launch without spawning anything.
Improvements & fixes
- Editor tools (VS Code / Cursor / Zed) respect configured
args, else default to opening the project root (#4). - Graceful fzf cancellation — ESC / ctrl-c prints
Cancelled.and exits 0 instead of an error (#4). - Richer
✓/✗launch summary showing each item's resolved path / command (#2). - Path-based CLI substitution at launch, so Flatpak/Snap/Squirrel wrapper entries aren't hijacked into e.g.
code run com.visualstudio.code(#9). - Robustness batch (#1): index-based project picker (handles names with spaces),
launch <name>shows the picker, re-register syncs the project name,shell-wordsarg parsing,$EDITOR/$VISUALwith arguments, AppleScript/PowerShell escaping, terminal path-traversal guard, and the multi-terminal cold-start race fix. - Launch-preview robustness (#3): Windows rooted/drive-prefixed path validation, gnome-terminal readiness probe, and resolved app args shown in
--dry-run. list --jsonescapes all JSON control characters below U+0020 (#6).
Internal
- Split the 718-line
main.rsinto a 32-line entry point +cli.rs(clap types) +commands/(one file per command) (#2). - Cross-platform CI workflow —
fmt/clippy -D warnings/teston Ubuntu, macOS, and Windows (#2). - Test suite grew from 53 → 127 tests.
Docs
- Added the MIT
LICENSEfile andlicense = "MIT"inCargo.toml(#8).
Known limitations
- Linux/Windows app discovery type-checks and is unit-tested on pure parsing, but hasn't yet been exercised against real
.desktop/.lnkinstalls on those platforms. - Windows
.lnkargument splitting uses POSIX tokenization (shell_words) — correct for common/unquoted args, not a faithful Windows command-line parser.
Binaries
Prebuilt binaries for macOS (x86_64, aarch64), Linux (x86_64, aarch64), and Windows (x86_64) are attached below, along with checksums-sha256.txt.
v0.1.1
Add release workflow for pre-built binaries, update README install in…
v0.1.0 — First Release
QuickDev v0.1.0
The first release of QuickDev — a cross-platform CLI tool that saves and launches your project's terminal tabs and applications with a single command.
Features
quickdev init— Initialize a project with.quickdev.toml, clone configs with--fromquickdev launch— Launch terminals and apps with fzf selection or--allquickdev list— Show all registered projects with terminal/app detailsquickdev add— Add terminals or apps interactively (fzf) or via CLI flagsquickdev remove— Remove items interactively (fzf multi-select) or by namequickdev edit— Open project or global config (--global) in$EDITORquickdev deregister— Remove a project from the global index
Terminal Emulator Support
| Emulator | macOS | Linux | Windows | Tabs |
|---|---|---|---|---|
| Ghostty | yes | yes | — | no |
| Terminal.app | yes | — | — | yes |
| gnome-terminal | — | yes | — | yes |
| Windows Terminal | — | — | yes | yes |
| PowerShell 7 | — | — | yes | no |
Highlights
- Per-project
.quickdev.tomlconfig with instructional comments - Global project index at
~/Documents/quickdev/config.toml - Per-terminal emulator override with global default fallback
- Auto-detection of VS Code, Cursor, and Zed editors
- macOS app discovery from
/Applicationsfor interactive add - fzf-based project picker when not in a project directory
- Tab support for Terminal.app, Windows Terminal, and gnome-terminal
- Cross-platform: macOS, Linux, Windows
Installation
git clone https://github.com/Abrar118/QuickDev.git
cd QuickDev
cargo install --path .Requires Rust 1.70+. Optional: fzf for interactive features.