Releases: juan294/summon
Releases · juan294/summon
v1.2.1
[1.2.1] - 2026-03-17
Removed
--themeflag andthemeconfig key — Ghostty's AppleScript API does not support per-surface themes (error -10006). Set themes globally in~/.config/ghostty/configinstead.window-save-statefromdoctorrecommendations — Ghostty restores split layouts but not pane commands, creating stale splits that conflict with summon's layout management.
Fixed
ENV_KEY_REextracted to shared constant invalidation.ts(was duplicated in index.ts and launcher.ts)summon confignow shows effective defaults when no machine config is set
Changed
@internalJSDoc tags added to all test-only exports for consistencylistStarshipPresets()results are now cached (avoids repeated shell-outs)- Branch protection on
mainhardened:enforce_adminsanddismiss_stale_reviewsenabled
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_REvalidation
v1.2.0
[1.2.0] - 2026-03-16
Added
--theme <name>flag andthemeconfig key — set Ghostty theme per workspacesummon doctor --fix— auto-add missing recommended Ghostty settings (backs up config first)summon freeze <name>— snapshot current resolved config as a reusable custom layoutsummon keybindings [--vim]— generate Ghostty key table config for pane navigation- Per-pane working directories via
pane.<name>.cwdconfig keys in tree layouts - macOS Accessibility permission detection in setup wizard and doctor
- Path traversal hardening for layout names
Changed
summon doctornow exits code 2 when issues are detectedsummon exportnow includesenv.*keys and adds a generation timestampsummon 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
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-startcommands validated for shell metacharacters from all config sourceslayout editvalidates$EDITORagainst SAFE_COMMAND_REsummon openre-prompts on invalid selectionsummon 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
developbranch - 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
[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
layoutsubcommand and actions (zsh + bash) - Custom layout names accepted by
--layoutflag andsummon set layout - Nested workspace detection:
SUMMON_WORKSPACE=1env 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 windowbug workaround — uses Cmd+N via System Events instead ofmake new windowwhich returns unusable tab-group references - CLI
--envkey names now validated againstENV_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.summonfiles validated against regex beforeisCustomLayout()
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()andlayoutNotFoundOrExit()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
[0.7.0] - 2026-03-14
Added
- Window management flags:
--new-window,--fullscreen,--maximize,--float - Per-workspace environment variables via
--env KEY=VALUEandsummon set env.<KEY> <VALUE> - Font size override via
--font-size <n>flag andfont-sizeconfig key - Pre-launch hook via
--on-start <cmd>to run a command before workspace creation summon doctorsubcommand to check Ghostty config for recommended settingssummon opensubcommand for interactive project selection and launchsummon export [path]subcommand to export resolved config as a.summonfile- 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_REnow 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 doctorexits 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
v0.6.1
Fixed
- Starship
STARSHIP_CONFIGenv var injection now works correctly in Ghostty surface configurations. Previously used shell env-prefix syntax (VAR=val cmd) which Ghostty'slogin/execmechanism doesn't interpret — now embedsexport STARSHIP_CONFIG=...inside the login shell's-lcargument.
v0.6.0
Added
- Per-workspace Starship prompt theming via
starship-presetconfig key and--starship-presetCLI flag. Each workspace launches withSTARSHIP_CONFIGpointing 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-presetandsummon set starship-presetwith dynamic preset listing COLORTERMenvironment variable documentation in README
Fixed
v0.5.0
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
printBannerexport (#94) - Env var docs:
SHELLandNO_COLORdocumented 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