head 1.15; access; symbols pkgsrc-2026Q2:1.3.0.2 pkgsrc-2026Q2-base:1.3; locks; strict; comment @# @; 1.15 date 2026.09.09.06.55.35; author pin; state Exp; branches; next 1.14; commitid p8kLMXCi90ryLUUG; 1.14 date 2026.09.07.07.12.46; author pin; state Exp; branches; next 1.13; commitid szgw9XW5nPRqVEUG; 1.13 date 2026.08.31.08.32.54; author pin; state Exp; branches; next 1.12; commitid 7cFwPYqT9uLSALTG; 1.12 date 2026.08.21.08.12.50; author pin; state Exp; branches; next 1.11; commitid 1yTBvZYLjd9VNtSG; 1.11 date 2026.08.18.10.15.50; author pin; state Exp; branches; next 1.10; commitid QiaRPL8niSQ5A6SG; 1.10 date 2026.08.17.07.13.23; author pin; state Exp; branches; next 1.9; commitid 8HV0me68XOcvBXRG; 1.9 date 2026.08.14.08.44.08; author pin; state Exp; branches; next 1.8; commitid i8rqkIISLULBcARG; 1.8 date 2026.08.07.09.20.26; author pin; state Exp; branches; next 1.7; commitid N1B7fbl1RmY0DGQG; 1.7 date 2026.08.06.13.12.11; author pin; state Exp; branches; next 1.6; commitid 0cdyRWFwf5OuWzQG; 1.6 date 2026.07.17.05.19.18; author pin; state Exp; branches; next 1.5; commitid FB5YrbtzDeo0YXNG; 1.5 date 2026.07.04.05.06.03; author pin; state Exp; branches; next 1.4; commitid WRli3VnadYvujiMG; 1.4 date 2026.06.30.05.22.58; author pin; state Exp; branches; next 1.3; commitid SQ041Tc6Xw5hxMLG; 1.3 date 2026.06.10.19.24.28; author pin; state Exp; branches; next 1.2; commitid uU0BV2S0d4MOPhJG; 1.2 date 2026.06.08.12.25.01; author pin; state Exp; branches; next 1.1; commitid GOS9keYOgzmUzZIG; 1.1 date 2026.06.06.11.53.05; author pin; state Exp; branches; next ; commitid jjuhOMLoeE5WsJIG; desc @@ 1.15 log @devel/gitpane: update to 0.16.0 [0.16.0] - 2026-09-08 Added Resize the commit message, changed files, and diff panes by dragging their borders. (#68, closes #67) Thanks @@expoli. Search incrementally in graph filters, the Changes pane, and a commit's changed files. Matching rows stay selected as results change, with Unicode-aware highlighting. (#70, closes #69) Thanks @@expoli. Fixed Bound libgit2 pack windows and object caches to keep large repositories from consuming excessive memory. (#66, closes #65) Thanks @@expoli for the report and fix. Repository additions and removals now synchronize across running instances without overwriting concurrent config changes. (#72, closes #71) File actions and diff previews treat filenames literally. Rename operations handle both paths, and discard refuses to overwrite a file recreated at the original path. (#74, closes #73) Late graph and GitHub responses cannot reopen closed details or show content from another repository or filter. Graph refreshes preserve pending updates and rebuild search matches. (#74) Small terminal layouts and long Unicode error messages no longer crash the app. Commit messages remain readable in narrow layouts. (#74) Status includes file-type changes and supports bare repositories. Pinned linked worktrees receive Git metadata updates. (#74) Configured file openers use a directory as their working directory, review commands expand their base ref, and Windows launcher and watcher paths use compatible spellings. Removing one repository preserves others with the same name. (#74) Changed Release builds validate the tag, Cargo versions, and matching release notes before building or publishing. (#74) @ text @# $NetBSD: Makefile,v 1.14 2026/09/07 07:12:46 pin Exp $ DISTNAME= gitpane-0.16.0 CATEGORIES= devel MASTER_SITES= ${MASTER_SITE_GITHUB:=affromero/} GITHUB_TAG= v${PKGVERSION_NOREV} MAINTAINER= pkgsrc-users@@NetBSD.org HOMEPAGE= https://github.com/affromero/gitpane/ COMMENT= Multi-repo Git workspace dashboard for the terminal LICENSE= mit # See, https://github.com/briansmith/ring/issues/1999 .include "../../mk/compiler/i386-sse2.mk" .include "cargo-depends.mk" RUST_REQ= 1.88.0 USE_LANGUAGES+= c c++ USE_TOOLS+= pkg-config perl gmake MAKE_ENV+= OPENSSL_DIR=${BUILDLINK_PREFIX.openssl:Q} RUSTFLAGS+= -C link-arg=${COMPILER_RPATH_FLAG}${BUILDLINK_PREFIX.openssl}/lib .include "../../lang/rust/cargo.mk" .include "../../security/openssl/buildlink3.mk" .include "../../mk/bsd.pkg.mk" @ 1.14 log @devel/gitpane:0.15.1 [0.15.1] - 2026-09-05 Fixed The Changes pane no longer flickers between an untracked directory and every file it contains. All status refreshes now keep untracked directories compact. (#64, closes #63) @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.13 2026/08/31 08:32:54 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.15.1 @ 1.13 log @devel/gitpane: update to 0.15.0 [0.15.0] - 2026-08-29 Added Submodule rows in the Changes panel can now be pinned to the repo list from the context menu: "Add to repositories" appears for unpinned submodules and swaps to "Remove from repositories" (with the same confirmation as the d key) once pinned. The menu is grouped with separators — mutations, inspect, graph, pin management — and adding a repo now jumps focus to the Repositories panel with the new row selected. (e0b93a5, 2a4b1ce) Pinned submodules nest under their parent repo in the list: they render as a dim └ name connector row directly below the parent in every sort order, instead of a long breadcrumb path sorted on its own. (2a4b1ce, 28a0614, c44f1d9) Fixed Removing a pinned repo that the root scan can never rediscover (a submodule inside another listed repo, or a repo outside every root) no longer appends its bare directory name to excluded_repos, where it substring-matched unrelated paths forever after. (2a4b1ce) Quitting no longer leaves an in-flight git operation (and its ssh) running after exit; fetch, pull/push/submodule and file/worktree ops are killed as a process group on exit, force-quit, or timeout. Follow-up to the v0.14.0 fetch process-group kill, which only covered the fetch timeout path. (#60, #61, closes #59) Thanks @@expoli. [0.14.1] - 2026-08-27 Added One-line install without Rust tooling: curl -fsSL https://raw.githubusercontent.com/affromero/gitpane/main/install.sh | sh detects the platform, downloads the latest release binary, and installs it to /usr/local/bin (override with GITPANE_INSTALL_DIR; sudo only when the target dir is not writable). Replaces the four per-platform curl+tar blocks in the README. Fixed A local branch and the remote-tracking branch it tracks (e.g. main tracking origin/main) now appear as a single entry in the git graph's branch filter instead of two, and selecting it walks the graph from both the local and upstream tips, so commits fetched from the remote stay visible even when the view is narrowed to that branch. The collapse applies only when it is unambiguous: All-branches mode, remote-tracking upstreams only, and exactly one local tracking the upstream; remote-only views and untracked or shared upstreams keep their own entries. Thanks @@expoli. [0.14.0] - 2026-08-26 Added Native support for herdr, a terminal workspace manager for AI coding agents, as a first-class multiplexer alongside tmux. Inside a herdr pane, o opens a new herdr pane at the target directory and v reviews in a new herdr tab, with tmux-shaped placements (split-window -h/-v, new-window, -t ) translated to herdr commands so existing configs keep working; tmux-only flags error instead of silently mis-launching. The ◉ liveness marker probes herdr pane list (preferring the foreground process's cwd), and G focuses the tab hosting the live pane. Nested setups resolve to the innermost multiplexer: tmux-inside-herdr picks tmux, herdr-inside-tmux picks herdr. herdr's output contract is strict: a response whose JSON shape drifts fails loudly in the logs instead of silently showing nothing live (tested against herdr 0.8.2). Thanks @@expoli. The Menu key opens the context menu for the selected row in every panel, as a keyboard fallback for terminals and multiplexers (like herdr) that intercept right-click. Opt-in [herdr] forward_right_click = true additionally asks herdr to forward right-click gestures to gitpane's pane at startup; it defaults to off because herdr cannot report the current routing, so the forwarding persists after gitpane quits. Thanks @@expoli. Fixed A repo fetch that times out is now killed as a process group, so the ssh child it spawned dies with it instead of lingering as an orphan that keeps the connection (and the repo's .git locks) alive. When process-group kill fails, gitpane falls back to killing the direct child. Thanks @@expoli. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.12 2026/08/21 08:12:50 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.15.0 @ 1.12 log @devel/gitpane: update to 0.13.0 [0.13.0] - 2026-08-19 Added The git graph is now cached per repo: switching back to a repo that was recently viewed restores its built rows instantly instead of reopening the repository, re-walking up to 200 commits, and diffing trees for stats. The cache is keyed by repo path plus the build-shaping options (branch filter, first-parent, ref/author filters, stats toggle), invalidated when a status refresh shows the repo's rendered refs/HEAD moved (even for repos that aren't selected, so a later switch never resurrects stale rows), evicted least-recently-used with a bounded capacity, and bypassed by the explicit g reload and live worktree refreshes. Rendered graph rows are cached too: the stable part of each line (lane prefix, labels, id, message, author) is rebuilt only when the row, theme, label width, or search highlight changes, with the relative-time tail (and one clock read per frame instead of one per row) recomputed fresh every frame. Thanks @@expoli. New --cwd flag scans the directory you are already standing in for repos for that run only, as a run-local override of root_dirs that is never written back to config.toml — unlike --root's old behaviour, the override is stored separately and save() does not serialize it, so pinning/removing/rescanning a repo or committing a theme can't leak the override into the saved config. --cwd is a plain boolean (it resolves to an absolute current_dir()), so it doesn't swallow a following subcommand: gitpane --cwd diagnostic works, and explicit paths stay with --root. When both are given, --cwd wins. Thanks @@expoli. Changed Repos now list their worktrees from startup instead of hiding them behind w. New users could not tell gitpane tracked worktrees at all until they found the key, and there was nothing to gain by hiding them: worktree data is already fetched for every repo on every status poll, so expanding costs no extra work. w still toggles, a collapse sticks for the session, and creating a worktree re-expands its repo so the new row is visible when it lands. Set [ui] expand_worktrees = false to start every repo collapsed, which is useful when many repos with many worktrees make the list too tall. Reported by @@isaacimholt. Fixed A configured root dir that doesn't exist on disk is no longer silently skipped: the Repositories panel shows a persistent root does not exist: hint above the list for the whole session, so a stale or mistyped root_dirs entry can't quietly shrink (or empty) the workspace with no explanation. Discovery itself is unchanged; previously only gitpane diagnostic surfaced it. Thanks @@expoli. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.11 2026/08/18 10:15:50 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.13.0 @ 1.11 log @devel/gitpane: update to 0.12.0 [0.12.0] - 2026-08-17 Added p pulls and P pushes the selected repo or worktree from anywhere, lazygit-style, and the GitHub panel toggle moved from p to =. Modified keys (Ctrl/Alt combinations) never trigger the repo-mutating shortcuts, and the reserved-key documentation covers the new bindings. Thanks @@expoli. Sleep-when-hidden now also applies outside tmux, superseding the v0.11.0 note that outside-tmux behavior was unchanged. With watch.sleep_when_hidden = true (the default), a session with no input for watch.doze_after_secs (default 120) drops to deep sleep: periodic polling, fetching, and watcher-driven refreshes all pause until the next input. Any deliberate input counts as presence (keys, mouse clicks and scrolls, paste, resize, focus changes), the idle timer wakes exactly once at the deadline instead of polling every 3 seconds, and the probe reports its state immediately on startup so a resumed session never sits stale. Thanks @@expoli. Fixed Pull and push no longer hard-code origin. A branch with a configured upstream or push remote runs bare, so git's own config decides the destination, including renamed upstream branches; otherwise gitpane resolves the repo's real remote (origin when present, else the workspace's own remote, as in Gerrit and mirror setups). Submodule update-to-latest, GitHub owner/repo detection, and the review launcher's default-branch base follow the same resolution. Thanks @@expoli. Quitting no longer hangs for tens of seconds while in-flight status queries drain on a large workspace. Mutating operations (pull, push, submodule updates) still complete before exit, with a status-bar notice and a second q as the force-quit escape, and a panic no longer reintroduces the hang or interrupts an in-flight pull mid-write. Thanks @@expoli. Pasting no longer copies the clipboard content an extra time per paste event. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.10 2026/08/17 07:13:23 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.12.0 @ 1.10 log @devel/gitpane: update to 0.11.0 [0.11.0] - 2026-08-15 Added gitpane now sleeps when nobody is looking at it. Under tmux, a lightweight probe (one tmux display-message every 3 seconds) tracks whether the pane is visible and whether the session has seen input recently, and drives three states: awake (visible and recently touched: full polling), doze (visible but input-idle for watch.doze_after_secs, default 120: periodic local polls and fetches stop, while filesystem-watcher refreshes still land and a once-per-second heartbeat renders their results, so the display keeps tracking real changes), and deep sleep (detached session, background window, or zoomed away: everything stops, and watcher events are dropped or deferred). Waking refreshes immediately: the local poll fires at once, a root-directory change that happened while hidden is replayed, and the frame repaints; the fetch timer instead resumes on its normal cadence so switching to a pane never triggers a burst fetch of every repo. With many long-lived gitpane instances only the one on screen does any work, which cuts idle CPU (and battery) from a constant 15-20% per hidden instance to zero. Outside tmux behavior is unchanged; opt out with watch.sleep_when_hidden = false. Changed The tick, local-poll, and fetch timers now skip missed ticks instead of replaying them in a burst after the event loop stalls. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.9 2026/08/14 08:44:08 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.11.0 @ 1.9 log @devel/gitpane: update to 0.10.4 [0.10.4] - 2026-08-12 Added A repository focus mode, toggled with f, dims repositories other than the selected one while keeping the selected repository's worktree and stash rows bright. The help overlay now stays within the terminal when showing the additional command. Fixed A–Z and Z–A sorting now remains stable when watcher-driven discovery runs. Pinned and nested repositories no longer jump back to scanner basename order several seconds after an explicit sort. Repository discovery now preserves the selected repository when the discovered set changes instead of moving the selection to the first row. Stash messages remain readable in focus mode instead of using the same hardcoded gray appearance as dimmed rows. Updated lru to 0.18.2 to address RUSTSEC-2026-0253, a potential use-after-free in LruCache::pop() inherited through ratatui. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.8 2026/08/07 09:20:26 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.10.4 @ 1.8 log @devel/gitpane: update to 0.10.3 [0.10.3] - 2026-08-06 Changed Repo rows were redesigned around one aligned seam. Names and branches now form the only two aligned columns (the branch column sizes to the widest visible branch, capped to a third of the panel), and everything after the branch (stash and worktree toggles, ahead/behind arrows, submodule markers, fetch warning, live-session dot, changed-file count) packs tightly per row. A row's indicators sit right next to its branch instead of floating in reserved columns that most rows leave empty, and clicking the stash/worktree toggles still hits exactly the drawn cells. The default branch is dimmed instead of loud. main and master now render in a new branch_default theme color (DarkGray by default, overridable in custom themes), so a clean repo on its default branch reads as a quiet row and only deviating branches carry the branch color. Removed The [ui] compact_repo_list option. The new layout packs rows by default while keeping names and branches aligned, which covers what both of the old modes were for; a leftover key in an existing config is ignored and disappears the next time gitpane saves the config. [0.10.2] - 2026-08-06 Added The file context menu gained "Copy path". Right-clicking a changed file now offers copying its absolute path (resolved against the active worktree, like Open folder) to the clipboard via OSC 52, so it works over SSH too. Status-bar toasts now pulse. A toast flashes its accent color every 150ms for its whole lifetime, so an OK or ERROR message no longer appears motionless in the bar and slips by unnoticed. A reverse-alphabetical sort mode. s now cycles A-Z, Z-A, then dirty-first, and every press shows a "sort: ..." toast in the status bar so the active mode is never a guess (previously the only indicator was a small label buried in the hint line, which truncates on narrow windows). Path completion in the add-repo input now shows its candidates. The first Tab extends what you typed to the longest common prefix and opens a menu above the input listing every matching directory; Tab and the arrow keys then move a visible selection through the list, and Esc closes the menu before it closes the input. Previously Tab silently replaced the input with the first match and cycled through the rest blindly. Changed Sorting now applies to the whole list. Manually added (pinned) repos used to stay grouped at the top in every sort mode, which read as sorting being broken for them, and made uppercase names like Presentations look like they were jumping the alphabetical queue. Pinning now only controls persistence (the repo survives rescans and restarts); position comes from the active sort, case-insensitively, like every other row. Fixed The selected repo no longer jumps when the list changes around it. Sorting with s used to reset the selection to the first row, and a background status refresh that added worktree rows to an expanded repo above the selection shifted it onto a different row entirely. The selection is now anchored to the repo itself (and its specific worktree or stash row) across sorts, status refreshes, discovery, and rescans; if the selected worktree disappears the selection lands on its parent repo, not a random neighbor. Manually added repositories no longer vanish after a restart or rescan. A sparse config file earlier in the search order (for example a hand-created ~/.config/gitpane/config.toml) silently shadowed the full config holding pinned_repos; loading still picks one file and never merges, but gitpane diagnostic now lists any shadowed config and warns about it by name. Separately, a bare repository (HEAD at the top level, no .git) passed the add validation but was dropped by the next discovery pass; adding and discovery now share one predicate, so anything you can add survives every rescan. A failed config save also only reached the log file while the repo looked pinned; it now shows a "save failed" toast in the status bar. Adding a repo gives feedback instead of failing silently. A path that is not a git repository keeps the input open with the error shown inline (previously the input closed and the error went to a log file nobody watches), an empty .git directory is rejected up front, adding an already-listed repo selects its row instead of creating a duplicate, and added paths are canonicalized so a symlinked or trailing-slash spelling cannot duplicate the repo on the next rescan. gitpane update no longer claims success without updating. The version check reads the GitHub release, which appears minutes before the matching crates.io publish lands; in that window a bare cargo install gitpane silently kept the old version while the command printed "Updated successfully". The install now pins the announced version, so it either installs exactly that version or fails with a note that the release may still be propagating. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.7 2026/08/06 13:12:11 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.10.3 @ 1.7 log @devel/gitpane: update to 0.10.1 [0.10.1] - 2026-08-05 Fixed Repo rows no longer render stray gaps. Moving the breadcrumb label to the front of the row in 0.10.0 left the branch field padded to a fixed minimum that no longer aligned anything, so short branches dragged dead space and the status indicators landed at a different column on every row. Rows now pack with single spaces by default; set [ui] compact_repo_list = false to pad names and branches to the widest visible entry instead, so branches and indicators form straight vertical columns. Clicking the stash/worktree toggles also hits exactly the drawn cells now (the hit-test ranges were one column left of the glyphs). [0.10.0] - 2026-08-05 Added Repositories managed by Google's repo tool are now discovered. A configured root containing a .repo/project.list contributes every listed project to the repo list, re-read on each scan so the list tracks repo sync, with the .repo metadata tree itself excluded from the walk. Repo rows are now labeled with their path relative to the configured root that contains them, middle-ellipsized to fit, so identically named projects from different workspaces stay distinguishable, and both sort orders group rows by that path. Thanks @@expoli. The commit diff now follows the highlighted file in the graph panel. Clicking a commit opens its changed files and shows the first one's diff immediately, and moving through that list with j/k, a click, or the scroll wheel brings each file's diff along, once the highlight has been still briefly so holding a key does not read a diff for every file it passes. The diff pane takes the keyboard only after you focus it with Enter or a click inside it, so j/k keep moving between files while it is merely on screen; Esc then leaves the diff first, and dismisses the file list and the pane after that. Clicking the commit that is already open no longer reloads it, so a double click keeps the file you picked. Thanks @@expoli. Fixed Copying from the graph context menu no longer dies immediately on Wayland or X11. App now keeps a long-lived arboard::Clipboard alive between copies instead of dropping it after each call, so the platform backend keeps serving the selection until something else replaces it. Thanks @@expoli. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.6 2026/07/17 05:19:18 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.10.1 @ 1.6 log @devel/gitpane: update to 0.9.1 [0.9.1] - 2026-07-14 Added Custom keybindings. Define [[keybindings]] blocks in the config to bind a single key to a shell command that runs against the selected repository or worktree. Each binding takes a key, a command where {path} expands to the target directory, an optional placement that reuses the [open] vocabulary (command, inline, ask, split-window, new-window), and an optional desc shown in the ? help overlay. Keys already claimed by the built-in global actions stay reserved, a key a panel uses for navigation can be bound but then stops navigating that panel, and gitpane diagnostic lists the bindings that were loaded so a key that does not fire is easy to trace. CI status on GitHub pull request rows. Each PR in the GitHub panel now shows its rolled-up checks result, fetched through gh's statusCheckRollup: a green ✓ when checks passed, a red ✗ when any failed, and a yellow ● while checks are still running. A PR with no checks shows nothing, and issues are unaffected. Failure takes precedence over a still-running or passing check, matching how GitHub itself summarizes a mixed run. Right-click graph commits for quick actions including copying commit hashes, opening changed files, search, branch collapse, and graph filters. Filters can include or exclude branches, authors, refs, and first-parent view settings with visible all/none/invert controls and mouse or keyboard navigation. [0.9.0] - 2026-07-09 Added A GitHub panel that shows the selected repository's open issues and pull requests, fetched through the gh CLI so it reuses gh's authentication and needs no token of its own. It appears as an optional fourth panel only when the selected repository has a github.com origin with open items, and stays out of the way otherwise; press p to force it open on any repository, and turn it off entirely with [github] enabled = false. Select an item and press Enter to preview its body and comment thread, and for a pull request its file changes, then Enter again to open it in the browser. c cycles the list between open, all, and closed items, and the panel resizes by dragging its border like the others. When gh is missing, the origin is not on github.com, or the network is down, gitpane keeps its usual three panels with a clear message. Changed Darkened the selected-row background across the repository, changes, and GitHub panels so a selected row's title and dimmed metadata stay legible. Updated crossbeam-epoch to 0.9.20 to clear RUSTSEC-2026-0204, an invalid pointer dereference advisory pulled in transitively through the directory walker. Updated ratatui to 0.30.2 and the ignore crate to 0.4.27. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.4 2026/06/30 05:22:58 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.9.1 @ 1.5 log @devel/gitpane: update to 0.8.2 [0.8.2] - 2026-06-30 Added Right-click a changed submodule in the Changes panel and choose "Open in graph" to point both the changes and commit graph panels at the submodule's own repository. The graph then shows the submodule's history and the panel shows its own changed files, instead of staying pinned to the parent. An uninitialized submodule reports that it is not initialized rather than opening an empty graph, and selecting any repository row returns to the parent view. Submodule rows still offer only Open, Open folder, and Open in graph, never stage or discard. Fixed An active worktree or submodule context now stays in control of the detail panels during a sort, rescan, or graph reload. Previously these could reload the selected parent repository over the active context and leave the changes and graph panels showing different repositories. Changed Updated anyhow to 1.0.103 to clear RUSTSEC-2026-0190, an unsoundness advisory affecting Error::downcast_mut. @ text @d3 1 a3 1 DISTNAME= gitpane-0.8.2 @ 1.4 log @devel/gitpane: update to 0.8.1 [0.8.1] - 2026-06-29 Added Right-click a file in the Changes panel to open a context menu with Stage, Unstage, Discard, Open, and Open folder. Stage and Unstage are gated by what the file actually supports: a worktree change can be staged, a staged change can be unstaged, and a partially staged file offers both. Discard is confirmation gated and restores a tracked file (or deletes an untracked one). Open launches the file through the configured [open] command, or the OS default app when none is set, and Open folder reveals the file in the system file manager. File operations run against the active worktree's tree when a worktree is selected, mirroring the diff view, while the parent repository row refreshes afterward. Submodule rows offer only Open and Open folder. Fixed Releasing no longer fails to reach crates.io silently. The publish step swallowed every error (including an expired token's 403 Forbidden) yet still reported success, so v0.7.15 and v0.8.0 were tagged and built but never published. The step now fails the job on real errors and treats only an already-published version as a skippable no-op. [0.8.0] - 2026-06-26 Added Open a repo or worktree with o. It opens the selected row in a new tmux pane (a shell in its directory) or runs a configurable [open] command such as a GUI editor. Where it runs is configurable through placement: a tmux split or new window (with right-of, below, or a named target), inline in the current terminal, or an interactive picker chosen at launch. When gitpane is not running inside tmux, a tmux placement falls back to running the command inline. Review the selected repo or worktree's diff with v. It runs [review] command (default git diff {base}...HEAD) in a new tmux window. The base ref comes from [review] base or the repository's resolved default branch; when neither resolves, gitpane shows a clear error instead of running a doomed diff. Create and remove linked worktrees from gitpane, via both the key bindings and the context menu. Creation makes the worktree on a new branch under [worktree] dir (or as a sibling of the repo). Removal is confirmation gated and runs git worktree remove without --force, so git refuses to delete a dirty or main worktree and no work is lost. Mark repositories and worktrees that have a live tmux pane cwd'd inside them with a ◉ indicator, so you can see at a glance where an agent or shell is parked. The marker is tmux only and shows nothing when tmux is unavailable. Go to a repo's live tmux session with G (or the context menu). gitpane auto-detects your terminal and opens the session in a new tab (WezTerm, kitty, GNOME Terminal, Konsole) or a new window (Ghostty, Alacritty), so the current view is never replaced and there is no in-place switch to get stranded by. The terminal table is data driven and documented, and [goto] command overrides it for any other terminal. Fixed Typing accented or multibyte characters, and pasting, in the path input used by Add repo and New worktree no longer panics. The cursor now advances by whole characters, and bracketed paste is inserted at the cursor. [0.7.15] - 2026-06-22 Fixed Right-clicking a linked worktree row now opens the context menu, so a worktree can be pulled, pushed, refreshed, copied, or opened in the git graph directly. Previously the menu appeared only on top-level repository rows, so worktrees had no way to run these actions. Each operation runs in the worktree's own directory against its branch (git -C ... origin ), while the parent repository row shows the spinner and refreshes afterward so the worktree's ahead/behind counts stay current. Submodule actions stay hidden on worktree menus. The changes panel for an active worktree now refreshes immediately after a pull or push, instead of lagging until the next background status poll. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.3 2026/06/10 19:24:28 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.8.1 @ 1.3 log @devel/gitpane: update to 0.7.14 [0.7.14] - 2026-06-09 Added - The submodule tag in the Changes panel now shows which branch the submodule is on (@@, or @@detached for a detached HEAD, which is git's default after submodule update), so a dirty or modified submodule tells you where the change lives. It also gains a ↛main warning when the pinned submodule commit is reachable from a remote but not from the submodule's default branch (origin/HEAD, falling back to origin/main/origin/master), meaning it still needs a merge there. The warning stays silent when no default branch resolves, so it never fires on a false positive. The existing ⚠unreach (commit on no remote) still takes precedence, while ↑N (ahead of upstream) and ↛main compose, e.g. [sub: +commit @@feature ↑3 ↛main]. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.2 2026/06/08 12:25:01 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.7.14 @ 1.2 log @devel/gitpane: update to 0.7.13 [0.7.13] - 2026-06-07 Fixed Adding a git submodule or linked worktree with the A key no longer removes it from the list almost immediately. A submodule stores its .git as a pointer file (gitdir: ) instead of a directory, so repository discovery did not recognize it as a real repo and pruned the pinned entry on the next filesystem rescan. Discovery now resolves the gitdir: pointer (absolute, or relative to the working tree) and looks for HEAD at the referenced git directory, so pinned submodules and worktrees persist. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.1 2026/06/06 11:53:05 pin Exp $ d3 1 a3 1 DISTNAME= gitpane-0.7.13 @ 1.1 log @devel/gitpane: import pkg Monitor all your repos at a glance. See branch, dirty state, ahead/behind, active worktrees, changed files, and commit history without leaving the terminal. If you work across multiple repositories, such as microservices, monorepos with submodules, or a mix of projects, you know the pain of checking status one directory at a time. Existing TUI tools focus on one repo at a time. lazygit and gitui are excellent for deep single repo work like staging hunks, interactive rebase, and conflict resolution. gitpane is the workspace level dashboard. It shows every repo at once, lets you drill into anything, and keeps you in the terminal. They complement each other. @ text @d1 1 a1 1 # $NetBSD$ d3 1 a3 1 DISTNAME= gitpane-0.7.12 @