All notable changes to git-stint will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
shared_filesconfig — copy individual files from the main repo into worktrees on session start, with path traversal protectionpost_createhooks — run shell commands in new worktrees after session creation for custom setup (e.g.,npm install, environment config)resumecommand — rebind to an existing session's worktree without restarting it, useful for recovering from disconnects or switching terminalswhichcommand — print the resolved session name or worktree path (--worktree)- PPID-based session resolution — when multiple sessions exist,
resolveSession()matches the caller's PPID against each session'sclientIdbefore throwing "Multiple active sessions" - Hook auto-resume — PreToolUse hook automatically resumes detached sessions
- Remote branch cleanup —
endandmergenow delete the remote branch when all changes are verified merged on the remote - Two-tier merge detection: commit ancestry (
--is-ancestor) for regular merges, content diff for squash and rebase merges - Checks against remote tracking refs (
origin/main), not local branches — a local-only merge won't delete the remote branch until you push, preventing accidental loss of the only remote copy - Checks both the default branch and the current branch on the remote (supports non-main workflows like
develop) - Graceful handling of network errors and missing remotes — warnings with manual deletion commands, never blocks the
endoperation - Unmerged remote branches are always preserved with a clear warning and the exact
git push origin --deletecommand to run manually
- Skip gitignored files in PreToolUse hook — writes to
node_modules/,dist/,.env, etc. no longer trigger session creation or blocking - Hook test suite covering gitignore patterns, negation, nesting,
.git/info/exclude, and policy enforcement
- Prevent
shared_dirssymlinks from being staged bygit add -A— symlinks (mode 120000) aren't matched by trailing-slash gitignore rules
shared_dirsconfig — symlink gitignored directories (caches, data, logs) from main repo into worktrees automatically onstartmain_branch_policyconfig —"block"(auto-create session),"prompt"(block with instructions),"allow"(pass through)force_cleanupconfig — control worktree removal behavior ("prompt","force","fail")adopt_changesconfig — carry uncommitted changes from main into new worktrees ("always","never","prompt")--adopt/--no-adoptCLI flags to overrideadopt_changesper invocation- Per-client
allow-mainflag scoped by PID — multiple Claude Code instances stay isolated install-hooksnow scaffolds.stint.jsonwith defaults if it doesn't exist- Updated Claude Code hook format to match current settings schema
- Core session commands:
start,commit,squash,merge,pr,end,abort,undo - Session listing:
list,list --json - File tracking:
track,status,diff,log - Cross-session conflict detection:
conflicts - Worktree-based test isolation:
test,test --combine - Orphan cleanup:
prune - Claude Code adapter with PreToolUse and Stop hooks
- Hook installer for
.claude/settings.json - Manifest schema versioning for forward compatibility
- Automated test suite: unit, security, and integration tests
- PR body generation from session changeset history