Skip to content

Releases: juan294/summon

v1.2.1

17 Mar 08:11
1bcf84c

Choose a tag to compare

[1.2.1] - 2026-03-17

Removed

  • --theme flag and theme config key — Ghostty's AppleScript API does not support per-surface themes (error -10006). Set themes globally in ~/.config/ghostty/config instead.
  • window-save-state from doctor recommendations — Ghostty restores split layouts but not pane commands, creating stale splits that conflict with summon's layout management.

Fixed

  • ENV_KEY_RE extracted to shared constant in validation.ts (was duplicated in index.ts and launcher.ts)
  • summon config now shows effective defaults when no machine config is set

Changed

  • @internal JSDoc tags added to all test-only exports for consistency
  • listStarshipPresets() results are now cached (avoids repeated shell-outs)
  • Branch protection on main hardened: enforce_admins and dismiss_stale_reviews enabled

Tests

  • 958 total tests (was 955 in v1.2.0)
  • 8 weak .toBeTruthy() assertions replaced with .toBeTypeOf('string')
  • 4 new tests covering tree layout + project CWD merge path
  • 3 new tests for starship preset caching
  • 6 new tests for ENV_KEY_RE validation

v1.2.0

16 Mar 20:24
e6a27bc

Choose a tag to compare

[1.2.0] - 2026-03-16

Added

  • --theme <name> flag and theme config key — set Ghostty theme per workspace
  • summon doctor --fix — auto-add missing recommended Ghostty settings (backs up config first)
  • summon freeze <name> — snapshot current resolved config as a reusable custom layout
  • summon keybindings [--vim] — generate Ghostty key table config for pane navigation
  • Per-pane working directories via pane.<name>.cwd config keys in tree layouts
  • macOS Accessibility permission detection in setup wizard and doctor
  • Path traversal hardening for layout names

Changed

  • summon doctor now exits code 2 when issues are detected
  • summon export now includes env.* keys and adds a generation timestamp
  • summon set env.<KEY> now validates env var key format
  • Ctrl+C during prompts exits with code 130
  • Various UX consistency improvements

Tests

  • 955 total tests (was 930 in v1.1.0)

Full changelog: https://github.com/juan294/summon/blob/main/CHANGELOG.md#120---2026-03-16

v1.1.0

16 Mar 17:30
e150bc5

Choose a tag to compare

v1.1.0 — Claude Optional, Security Hardening, Test Coverage

Changed

  • Claude CLI is no longer the default editor — setup wizard runs on first launch when no editor is configured
  • Editor catalog reordered: vim and nano (ship with macOS) first, Claude last
  • on-start commands validated for shell metacharacters from all config sources
  • layout edit validates $EDITOR against SAFE_COMMAND_RE
  • summon open re-prompts on invalid selection
  • summon set editor "" now refuses empty string for command keys
  • Unified resolveCommand — setup.ts reuses utils.ts instead of duplicating

Fixed

  • Flaky test under v8 coverage stabilized
  • Duplicate SAFE_COMMAND_RE check removed from launcher

Tests

  • 875 tests (was 829), all per-file coverage thresholds met

Infrastructure

  • CodeQL on develop branch
  • Strict dependency review (no more continue-on-error)

Full changelog: https://github.com/juan294/summon/blob/main/CHANGELOG.md#110---2026-03-16

v0.8.0

14 Mar 19:49
49a0d91

Choose a tag to compare

[0.8.0] - 2026-03-14

Added

  • Custom layout builder with tree DSL for arbitrary Ghostty split configurations (e.g., editor | shell / logs)
  • Interactive layout builder wizard via summon layout create <name> with live grid preview
  • Layout CRUD commands: summon layout create, save, list, show, delete, edit
  • Shell completions for layout subcommand and actions (zsh + bash)
  • Custom layout names accepted by --layout flag and summon set layout
  • Nested workspace detection: SUMMON_WORKSPACE=1 env var set in all panes, warns when launching inside an existing workspace
  • No-args invocation now shows full help text instead of terse error

Fixed

  • Ghostty AppleScript make new window bug workaround — uses Cmd+N via System Events instead of make new window which returns unusable tab-group references
  • CLI --env key names now validated against ENV_KEY_RE — invalid keys (spaces, leading digits) are warned and skipped
  • Layout name validation added to layout show, layout delete, layout edit — defense-in-depth against path traversal
  • Path traversal guard in resolveConfig() — layout names from .summon files validated against regex before isCustomLayout()

Changed

  • Setup wizard now shows only detected/available tools instead of dimming unavailable ones
  • Extracted 9 shared AppleScript generation helpers reducing ~200 lines of duplication
  • Extracted validateLayoutNameOrExit() and layoutNotFoundOrExit() helpers in CLI entry point
  • Removed unreachable dead code in tree DSL parser

Tests

  • 677 total tests (was 523 in v0.7.0), 98.47% statement coverage

Install: npm i -g summon-ws

v0.7.0

14 Mar 16:50
25c56fb

Choose a tag to compare

[0.7.0] - 2026-03-14

Added

  • Window management flags: --new-window, --fullscreen, --maximize, --float
  • Per-workspace environment variables via --env KEY=VALUE and summon set env.<KEY> <VALUE>
  • Font size override via --font-size <n> flag and font-size config key
  • Pre-launch hook via --on-start <cmd> to run a command before workspace creation
  • summon doctor subcommand to check Ghostty config for recommended settings
  • summon open subcommand for interactive project selection and launch
  • summon export [path] subcommand to export resolved config as a .summon file
  • Environment variables and font size now set via Ghostty's surface configuration

Fixed

  • Shell-quote env var values in root pane exports to prevent injection (#118)
  • SHELL_META_RE now catches ${...} parameter expansion patterns (#119)
  • Env var key names validated against [a-zA-Z_][a-zA-Z0-9_]* pattern (#120)
  • Help text column alignment (#121), ambiguous flag hint (#122), empty command warning (#123)
  • summon doctor exits with status 1 when issues found (#124)
  • Plural mismatch in dry-run output (#125)

Changed

  • Documentation refreshed for all new features
  • Synced with cc-rpi blueprint v1.8.0

Full changelog: https://github.com/juan294/summon/blob/main/CHANGELOG.md#070---2026-03-14

v0.6.2

14 Mar 08:54
c4225f4

Choose a tag to compare

Added

  • Interactive shell panes now receive a clear command after setup, removing the "Last login" message and any export commands from view

Changed

  • README title updated to "Summon your Ghostty workspace!"

v0.6.1

14 Mar 08:48
993ab1d

Choose a tag to compare

Fixed

  • Starship STARSHIP_CONFIG env var injection now works correctly in Ghostty surface configurations. Previously used shell env-prefix syntax (VAR=val cmd) which Ghostty's login/exec mechanism doesn't interpret — now embeds export STARSHIP_CONFIG=... inside the login shell's -lc argument.

v0.6.0

14 Mar 08:48
210a737

Choose a tag to compare

Added

  • Per-workspace Starship prompt theming via starship-preset config key and --starship-preset CLI flag. Each workspace launches with STARSHIP_CONFIG pointing to a cached preset TOML, giving projects distinct prompt themes without modifying the global ~/.config/starship.toml
  • Starship preset selector in the setup wizard with true-color palette swatches for the 4 color-rich presets (pastel-powerline, tokyo-night, gruvbox-rainbow, catppuccin-powerline)
  • "Random (surprise me!)" option in the Starship preset selector
  • Shell tab completion for --starship-preset and summon set starship-preset with dynamic preset listing
  • COLORTERM environment variable documentation in README

Fixed

  • Starship preset TOML files now use explicit 0o600 permissions, matching other config files (#97)
  • Added "Aborted." message when user declines dangerous command confirmation (#98)

v0.5.0

13 Mar 17:24
adde598

Choose a tag to compare

What's New

Pane & Tab Titles

Every pane now displays a human-readable title via Ghostty 1.3.1's set_surface_title action. The tab title is set to the project directory basename.

editor · claude    |  editor · claude    |  sidebar · lazygit
                   |  server · npm run dev |

Title format: role · command when a command is set, or just role for plain shells.

Other Changes

  • Bash completions: all short flags (-h, -v, -l, -e, -n) now completable (#93)
  • Dead code cleanup: removed unused printBanner export (#94)
  • Env var docs: SHELL and NO_COLOR documented in README and user manual (#95)
  • Ghostty minimum: bumped from 1.3.0 to 1.3.1

Stats

  • 390 tests passing across Node 18/20/22
  • ~33.5 KB total bundle (zero runtime dependencies)
  • Pre-launch audit: all 6 specialists GREEN, 0 blockers

Full Changelog: v0.4.1...v0.5.0

v0.4.1

13 Mar 17:10
81057d0

Choose a tag to compare

What's Changed

  • refactor: Rename "server" pane to "shell" across entire codebase
  • fix(cli): Address pre-launch audit findings
  • docs: Update README, user manual, architecture, and changelog