Releases: roie/gitna
Release list
Gitna 0.3.3
What’s fixed
- Quick Open searches large folders more efficiently and keeps results visually steady while typing, with clearer file icons and matching text.
- Empty Explorer folders no longer flash an expand chevron when clicked, and refreshing correctly updates folders after files are added or removed.
- Live repository refreshes preserve the review and file counts, with delayed indicators for longer-running refreshes.
- Improved Source Control reliability around Git operations and repository metadata changes.
- Binary installation now uses bounded download retries and handles concurrent installations more safely.
- Updated dependencies and fixed cross-platform browser checks, with the full Windows, macOS, and Linux CI matrix passing.
Full changelog: v0.3.2...v0.3.3
Gitna 0.3.2
What’s fixed
- Repository Explorer now opens large Git repositories quickly by loading folders on demand instead of transferring the entire ignored-file manifest at startup.
- Quick Open continues indexing tracked, untracked, and ignored files in the background, while Repository keeps an exact file count.
- Fixed lazy Explorer status indicators, deep file navigation, and drag-and-drop renames.
Gitna 0.3.1
Gitna 0.3.1 is a reliability and polish update.
- Improved Explorer behavior for folders, file errors, and image previews.
- Fixed editable file theme synchronization.
- Improved Source Control scrolling and collapsed sidebar sizing.
- Graph now shows the exact total commit count.
- Improved clean shutdown and cross-platform reliability.
Full changelog: v0.3.0...v0.3.1
Gitna 0.3.0
Gitna 0.3.0 turns the local Git workbench into a folder-first workspace that remains fast across large directories, reviews, and histories.
Folder-first workbench
- Open any local folder, not only Git repositories. Ordinary folders keep Explorer, tabs, editing, search, and file tools; Git folders automatically add Source Control, Graph, branches, stashes, tags, and Git operations.
- Start from a redesigned Home screen with searchable recent folders and clear last-opened timestamps.
- Open recent folders in the current tab or a new tab, remove entries from history, and switch folders without restarting Gitna.
- Use stable per-folder URLs for refreshes, browser navigation, bookmarks, and isolated parallel tabs.
- Switch progressively through a branded loading screen while Gitna initializes the destination in the background.
- Keep unsaved drafts protected when returning Home, switching folders, or closing tabs.
Explorer and command palette
- Press
Cmd/Ctrl+Kto search every indexed path with Quick Open; type>to switch into command mode. - Run context-aware workbench and Git commands from the same keyboard-first palette, with unavailable mutations hidden while an operation is running.
- Browse huge ordinary folders through lazy directory expansion, deterministic paging, and an accessible manual Load more fallback.
- Search deep ordinary-folder paths independently of which directories are expanded or currently watched.
- Show or hide hidden and ignored repository files independently, with status retained in Pierre Trees.
- Use Repository tree or list views, status filters, direct branch controls, and complete-path search without limiting results to mounted rows.
- Select two Explorer files with
Cmd/Ctrl-click and choose Compare Selected for text, raster images, or unsaved drafts; swap sides without leaving the comparison.
Reviews and repository history at scale
- Load large staged, unstaged, commit, and comparison reviews in bounded pages instead of requiring the entire change set up front.
- Append review pages automatically near the end and fetch an off-page file immediately when it is selected.
- Keep the Pierre review surface mounted while pages append, and keep existing review content visible during refreshes or transient failures.
- Virtualize the outer Graph timeline so histories with thousands of commits render only the visible rows while Pierre Trees continues to own each commit’s file tree.
- Continue Graph history near the end without eagerly draining every page, and expose an exact count for commits reachable from the captured HEAD.
- Bind Graph pages and counts to an immutable tip and generation to prevent mixed history during repository changes.
- Open files as they existed at a selected commit, while Open File continues to target the current working-tree version through Repository Explorer.
- Preserve Graph expansion, keyboard focus, context menus, lane continuity, and scroll anchors across paging and refreshes.
Large-folder performance and reliability
- Bound watcher coverage, directory pages, review pages, search work, and lazy-tree resources to prevent runaway memory, file-descriptor, and request growth.
- Decouple folder search indexing from filesystem watching so deep Quick Open results remain available even when watch coverage is intentionally limited.
- Retire inactive folder backends and event streams after a grace period while retaining stable routes for fast revival.
- Split large stage, unstage, discard, and delete operations into bounded sequential Git invocations.
- Reconcile lazy-folder refreshes, Graph pagination, exact counts, and review pages against repository generations to reject stale results.
- Close active event streams during shutdown and harden overlapping folder switches, refreshes, palette actions, and mutation controls.
macOS and visual polish
- Add native unsigned terminal packages for macOS Apple silicon and Intel, including npm platform selection for both architectures.
- Open the default browser, reveal files and folders in Finder, and handle case-insensitive APFS path identity correctly.
- Ship and smoke-test Linux x64/arm64, Windows x64, macOS arm64, and macOS x64 release archives.
- Add theme-aware Gitna branding, unified Gitna-owned scrollbars, refined Home and recent-folder layouts, and clearer file, folder, and Graph actions.
Gitna remains local by design: it binds to loopback, protects routes with random capability URLs, and keeps folder and repository data on your machine.
Full Changelog: v0.2.2...v0.3.0
Gitna 0.2.2
Gitna 0.2.2 fixes a CodeView error when opening a reviewed file in the Repository editor.
Fixed
- Reconcile CodeView items when the same path changes from a diff to an editable file, preventing
CodeView.syncItemRecord: type mismatcherrors. - Add browser coverage for moving directly from a reviewed change into repository editing.
Documentation
- Refresh the README with the Gitna logo, project badges, an early-development notice, and a full workflow demo.
Full Changelog: v0.2.1...v0.2.2
Gitna 0.2.1
Gitna 0.2.1 fixes an error that could occur when opening a file from the Repository or Graph while the working tree was clean.
Fixed
- Reconcile Pierre CodeView items atomically instead of removing and re-adding them, preventing
CodeView.addItem: duplicate iderrors. - Preserve compatible viewer and editor state while changing review targets.
- Add browser regressions for opening Repository and Graph files from a clean working tree, plus switching between repository files.
Full Changelog: v0.2.0...v0.2.1
Gitna 0.2.0
Gitna 0.2.0 expands the local Git review experience into a practical repository workspace, with secure file editing, richer source-control navigation, raster image previews, and extensive interface polish.
Highlights
Browse and edit repository files
- Browse the active repository in searchable Tree and List views.
- Open files in scrolling, Zed-style tabs with dirty-state indicators and context menus.
- Edit text files with word wrap enabled by default and save with
Ctrl/Cmd+S. - Create, rename, move, delete, and drag files and folders without automatically staging changes.
- Detect stale writes with content hashes and preserve drafts through refreshes and failed repository switches.
Improved source-control workflow
- Move seamlessly between Working File, Unstaged Changes, and Staged Changes views.
- Stage, unstage, discard, delete, save, and operate on hunks through consistent file-header actions.
- See compact remote-sync confidence and clearer Git status indicators throughout the repository tree.
- Copy commit IDs directly from the graph.
Raster image review
- Preview PNG, JPEG, WebP, and GIF files directly in reviews and repository tabs.
- Compare image changes in balanced panes and inspect images in a lightweight full-size viewer.
- Keep binary and oversized files safely read-only.
Refined experience
- Review content remains visible while background updates run, avoiding disruptive remounts and blinking.
- Source Control panes now size cleanly across desktop and narrow layouts.
- Repository-aware browser titles use
<repository> - Gitna. - Startup output is shorter and easier to scan.
- Display settings show the running Gitna version and project links.
- Confirmations, menus, tabs, icons, tooltips, and empty states received accessibility and interaction polish.
Reliability and security
- Repository writes are confined to the active worktree, atomic, bounded, and symlink-safe.
- Save races and consecutive saves are guarded to prevent stale updates.
- Repository switching and process execution received additional validation and failure handling.
- Windows file editing now uses portable temporary filenames.
- Release verification now exercises packaged Linux and Windows binaries with browser tests before publication.
Full Changelog: v0.1.1...v0.2.0
Gitna 0.1.1
What's changed
- Replaced remaining donor branding with Gitna's theme-aware favicon and repository-header logo.
- Made the commit ID in Graph hover details clickable, copying the full commit SHA with hover/focus styling and a brief success confirmation.
Distribution
- npm releases now use GitHub Actions trusted publishing with OIDC provenance instead of a long-lived npm token.
Full changelog: v0.1.0...v0.1.1
Gitna 0.1.0
Gitna is a fast, local Git workbench that runs in your browser. It brings a focused source-control workflow, continuous visual diffs, and repository history to any editor without requiring Electron or a hosted service.
Highlights
- Review staged, unstaged, commit, and comparison changes in a continuous Pierre CodeView with split and unified layouts.
- Stage or unstage files, folders, and individual hunks.
- Commit and amend while preserving normal Git hook behavior.
- Browse repository files, branches, tags, stashes, and commit history.
- Fetch, pull, push, compare, merge, rebase, cherry-pick, and revert.
- Resolve conflicts using ours, theirs, or combined content.
- Switch between local repositories without restarting Gitna.
- Use a responsive Source Control overlay on narrow screens and WSL.
Install
npm
npm install -g gitna
gitna .The npm launcher downloads the matching native binary from this GitHub release, verifies its SHA-256 checksum, and caches it locally.
mise
mise use -g github:roie/gitna
gitna .Direct download
Download the archive for your platform below, extract it, and place gitna (gitna.exe on Windows) on your PATH.
Supported platforms
- Linux x64
- Linux arm64
- Windows x64
- WSL using the Linux binary and your normal Windows browser
Local by design
Gitna uses your installed Git and keeps repository data on your machine. It binds only to a random loopback port, protects each browser session with a high-entropy capability URL, and does not upload repository data.
Gitna requires an installed git executable and a modern browser.
Full changelog: https://github.com/roie/gitna/commits/v0.1.0