Skip to content

Releases: schovi/git-treehouse

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 13:24

New Features

Context Frames Below The Details Panel

State-driven context frames that drill into the selected row, laid out as two columns below the Worktrees panel: the left column stacks Details, Changes, and PR review; the right column is a Git context graph grown to match the left column's height. Side by side at 104 columns or wider, stacked otherwise.

  • PR review frame: a roll-up of PR state, checks, and reviews, plus individual failing or running checks, change-request previews, and inline review threads. Each line is an OSC 8 hyperlink. Loaded lazily per selected row via gh pr view and a GraphQL reviewThreads query, and stays visible with a loading placeholder for open PRs.
  • Changes frame: a per-file churn summary for a worktree row, showing "no changes" when the worktree is clean.
  • Git context frame: places the row's tip in its local history with colored ahead/behind arrows versus main and the remote, a two-rail diverged graph that folds back into the shared fork point, and the upstream woven in as real nodes. Renders for both worktree rows and branch-only rows (the branch tip ref stands in for HEAD; the graph loads lazily for the selected branch).

The Details panel is slimmer: neither worktree nor branch rows repeat Main / Commit / Remote / PR, since the paired frames now cover them.

Bug Fixes

  • Merged PRs now render the purple merged glyph and drop the irrelevant CI glyph, matching the PR review frame.
  • The main branch no longer shows a PR. It is skipped when querying and when attaching, so an old or fork PR that shares the main branch's name no longer surfaces on the root row.

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 21 Jun 21:10

New Features

Clean Up Merged Command

Added a palette-only batch command, Clean up merged. It scans all done rows regardless of the current filter or search: worktrees or branch-only rows merged into main, plus worktrees whose PR is merged or closed. It opens a confirmation dialog with counts for worktrees to remove and branches to delete, representative affected rows, and the exact commands that will run.

The batch stays conservative: worktree removal uses only git worktree remove (never --force), branch deletion uses only git branch -d (never -D). Only clean, unlocked, non-root, non-active worktrees are removed; dirty, locked, active, root, detached, prunable, and not-yet-loaded rows are ignored. Worktree branches are deleted only when merged into main, while PR merged/closed worktrees not merged into main are removed but keep their local branch. Approved before_delete hooks run once per removed worktree; a hook failure counts as that row's failure and skips its removal while the rest of the batch continues. Full success shows a summary; partial failure keeps a result dialog open with counts and reasons. When the batch deletes branch refs with known SHAs, the success message offers u to restore all deleted refs.

Bug Fixes

  • Fixed the PR column staying silently empty on large repos. The single gh pr list call requesting statusCheckRollup forced GitHub's GraphQL API to resolve CI for all 200 PRs, returning HTTP 504. The fetch is now split: a fast branch→PR mapping without statusCheckRollup, and CI status fetched lazily per open PR.
  • Fixed the PR fetch being cancelled by a hard 2s timeout on large repos (listing 200 PRs takes ~4-5s). The timeout is now a named 15s constant.
  • Fixed delete dialog errors overflowing the frame. Git delete failures now wrap across lines instead of hard-truncating, advisory git hint lines are dropped, the error block is capped, and the dialog body is clipped to the terminal height.

Improvements

  • Cut initial PR latency on normal repos. When the local branch count is small (≤40), each branch is queried with gh pr list --head in a parallel worker pool, so number, state, and CI all arrive together in ~1s instead of ~5s+. Above the threshold, the single list call with lazy CI is used to avoid a large request fan-out.

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 10:34

New Features

Checkout PR into a worktree

A new palette-only Checkout PR command. Open the command palette (Ctrl+P) and run Checkout PR to open a centered picker that loads up to 200 pull requests via gh pr list --state all, sorted by most recently updated (open, draft, merged, and closed).

  • Type to filter by PR number, title, URL, owner, head branch, or local branch name.
  • / or k/j move the highlighted PR.
  • Enter checks out the PR into a worktree:
    • Existing non-prunable worktree for the branch → cd into it immediately.
    • Existing local branch without a worktree → git worktree add <path> <branch> using the normal path template, then the usual post-create steps.
    • New PR branch → git fetch origin pull/<number>/head, then git worktree add -b <branch> <path> FETCH_HEAD, then post-create steps.
    • On success the app cds into the worktree and exits.
  • Same-repo PRs use headRefName; fork PRs use <owner>/<headRefName>.
  • o opens the highlighted PR in the browser (gh pr view <number> --web). If the input is a PR URL or number not in the list, Enter/o act on it directly.
  • Esc closes the picker. There is no global keybinding for this flow.
  • Existing local branch reuse does not force-update the branch from the PR head.

Documentation

  • Reorganized the behavior spec into docs/architecture.md plus per-feature docs under docs/features/, replacing the single docs/spec.md, and added a documentation policy.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 05:14

New Features

Repo-Scoped .worktree Configuration

A committed repo-level .worktree TOML schema for path template overrides, named-file copy behavior, and approved lifecycle hooks. Declarative settings apply immediately, while post_create and before_delete hooks run only after git-treehouse allow records the current hook hash in repo-local Git config. doctor now reports .worktree keys and hook approval state.

Filter Picker Modal

Tab now opens a filter picker modal instead of cycling filters in place (the palette entry is renamed from "Cycle filter" to "Open filter picker"). The modal lists every filter with its matching row count; empty filters are disabled (all is always available). Inside the picker, / (or k/j) move the selection, Tab jumps to the next enabled filter and Shift+Tab to the previous, Enter applies, and Esc closes.

Merged Worktree Filter

A merged filter in the cycle (all → modified → branches → merged → prunable → locked → detached) and a filter-merged palette command. It surfaces rows that are safe to clean up: clean worktrees whose branch is merged to main or whose PR is merged/closed, plus merged branch-only rows. The root repository and detached worktrees never match.

Restore Deleted Branches

After deleting a branch ref (from a branch-only row, or a combined worktree + branch delete), a green success offer appears for about 10 seconds: ✓ deleted <name> (<short-sha>) · u to restore. Pressing u recreates the ref with git branch <name> <sha>. Only the branch ref is restored, not worktree files or uncommitted changes. The offer is superseded by the next delete or refresh.

Copy PR URL Command

A palette-only command, "Copy PR URL" (copy-pull-request-url), copies the selected row's pull request URL to the clipboard with a copied PR URL: <url> confirmation. Rows without a PR flash no pull request URL for this row.

Improvements

  • Responsive list columns now drop and shrink more gracefully on narrow terminals (in both the TUI and the list subcommand): size drops first, then commit truncates to the short SHA, then PR and age drop, while name, status, and remote always survive. The PR and size columns size dynamically to their content.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 07:33

New Features

Scrollbar for the worktree list

The worktree list now renders a scrollbar in a right-hand gutter when the rows overflow the visible height.

  • / arrows show when there is more content above or below
  • a thumb tracks the scroll position, with a track elsewhere
  • the footer shows the current position as start/total

The scrollbar only appears when the list is taller than the viewport, so short or narrow lists are unaffected.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 06:30

New Features

Local Branches in the List

The table can now show local branches that are not checked out by any worktree. Press b to toggle branch-only rows; the preference persists to config as show_branches (default false). The Tab filter cycle gains a branches state that surfaces branch-only rows even when the toggle is off.

show_branches = false   # default: hide branch-only rows until `b` is pressed

Create a Worktree from an Existing Branch

Enter on a branch-only row opens a New worktree confirmation that uses your path_template, runs git worktree add <path> <branch>, and cds into the new worktree on success.

Checkout a Branch in the Root Worktree

c on a branch-only row checks the branch out in the root worktree, then cds into root. A clean root runs git switch -- <branch> directly. A dirty root opens a confirmation that blocks checkout until you enable stashing with s, which runs git stash push -u before switching. No force checkout or discard happens.

Branch-Only Delete

d on a branch-only row deletes just the local branch ref and never touches worktree files. Merged branches use safe git branch -d; unmerged branches require an explicit force delete with git branch -D.

Improvements

  • Reworked row glyphs into a single name column with row-type icons ( root, worktree, local branch) plus lifecycle suffixes (! locked, × prunable). The standalone marker column is gone.
  • The active worktree row is now bold, and row icons use softer accent colors.
  • y on a branch-only row copies the branch name; worktree rows still copy the absolute path.
  • The detail panel and footer adapt to branch-only rows with branch-specific metadata and actions.

Bug Fixes

  • Fixed the delete flow feedback: deletion now shows in-progress spinner feedback, keeps the dialog open and shows the git error inline on failure, and ignores stale delete results.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 08 Jun 15:39

New Features

Command Help

git-treehouse help, git-treehouse help list, git-treehouse help init, and git-treehouse help doctor now print command-specific help. Root and subcommands also accept -h and --help.

Explicit Repository Selection

git-treehouse, git-treehouse list, and git-treehouse doctor can now load a repository or worktree path with --repo <path>, including ~ expansion.

git-treehouse list --json --repo ~/code/project-worktree

Shell Integration Install Targets

The first-run installer now installs Fish, Nushell, and PowerShell integration into dedicated autoload or module files: ~/.config/fish/functions/gth.fish, ~/.config/nushell/autoload/gth.nu, and the GitTreehouse PowerShell module. Existing legacy profile installs are still detected.

Bug Fixes

  • Tightened modal overlay spacing so background content above and below centered popups is preserved.

Documentation

  • Added the project changelog.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 07 Jun 14:35

New Features

Faster TUI loading and enrichment

Git Treehouse now opens the app frame before slower metadata finishes loading. Local metadata, pull request status, and worktree size data fill in asynchronously so large repos feel less blocked.

Refresh feedback

Pressing r now runs git fetch --prune, keeps the current selection and visible rows stable, and shows refresh progress in the Worktrees title. Automatic refreshes stay quieter.

JSON size fields

git-treehouse list --json now includes git_size and full_size. The existing size field remains as a compatibility alias.

Improvements

  • Reworked the help overlay with grouped shortcuts and marker, status, and PR legends.
  • Cleaned up Details and Worktrees panel titles, border hints, and selected-row actions.
  • Added an approved pull request indicator () and reduced PR-column flicker while GitHub data loads.
  • Changed Esc in list view to cancel or clear context. Use q or Ctrl+C to exit.

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 07 Jun 07:30

Changelog

  • fb4ef0f feat: Add diagnostics and polish delete workflow
  • 4073390 fix: Restore full-row selection highlight

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 06 Jun 21:12

Changelog

  • 79d5e82 feat: Refine worktree footer controls