Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:16
· 40 commits to main since this release
9acb496

✨ Features

  • Clean up after the browser CLI when the app starts: stop the daemon ghl 0.1 or 0.2 left on port 7777, remove its lock folder, and remove a CLI installed from source in ~/.local/bin/ghl that would shadow the app's ghl. (#180)
  • Highlight code in background workers, so scrolling a large review no longer stutters as each file comes into view, and render it about twice as fast. Reviews of thousands of files and checkouts with many branches load faster too. (#192)
  • Open the window maximised: it fills the screen with the menu bar and the Dock still visible, and the zoom button brings it back to its former size. (#200)
  • Centre the comparison capsule in the title bar; in a narrow window it moves left to keep room for the actions. (#201)
  • Show a stacked branch's layer, such as 2/3, at the start of the comparison in the title bar instead of a line of branches in the status bar: it opens the stack from the top layer down to the trunk, with each pull request and whether a layer is merged or pruned. Press s to open it, and [ or ] to review the layer below or above. (#202)
  • Open a review in place of the one shown instead of in a new tab: running ghl in another checkout, or opening a repository with Cmd+O, replaces it. (#203)
  • Right-click a file in the tree or on its header for a native menu with Viewed, Copy Path and Reveal in Finder on that file. (#208)
  • Offer a compact title bar, 38 px instead of 52 with macOS's compact toolbar, to give the code more room: Settings, under Window, turns it on from the next launch. (#210)
  • Find Settings… (Cmd+,) in the ghl menu, where macOS apps keep it, instead of File. (#243)
  • Open Settings in a window of its own, with Appearance, Code and Window panes: the review stays visible beside it and follows each change as you make it. The title bar is a choice between Standard and Compact pictures instead of a checkbox. (#244)
  • Code intelligence, in beta: turn it on in Settings, then hold Cmd over a symbol for its type and documentation, and Cmd-click it to go to its definition, with Cmd+[ to come back. The answers come from the language servers on your Mac, for working-tree reviews: TypeScript 7 or tsrs, basedpyright, pyright or ty for Python, gopls, terraform-ls, helm_ls for Helm charts, and rust-analyzer. References opens a Symbol tab beside Comments with the symbol's references in the repository, those in the diff marked and one click away; a setting turns the tab off. Settings show which server each language would use, and the status bar what it is doing. (#223, #226, #228, #231, #236, #237)
  • Resolve a comment instead of deleting it: Resolve on a card closes it and keeps it, out of the diff, the panel, the count and Copy. ghl comments and Copy show each comment's ID, ghl comments --all lists resolved comments too, and ghl comments resolve <id> and reopen <id> work from the terminal. The review state moves to version 2; an older ghl refuses it instead of reopening resolved comments. (#227)
  • Copy comments in a compact text sized for an agent: each comment gives its ID, path:lines and body, and quotes only the lines the file no longer has, removed by the change or changed since. ghl comments prints the same text, and --code quotes every comment's current lines. (#238)
  • Show the reviewed branch's GitHub pull request in the title bar: its number with the colour of its state, the local commits GitHub does not have yet and conflicts with its base. Click it for the title, reviews, merge status, what is not pushed, and a link to GitHub. It needs the GitHub CLI, signed in; Settings, under GitHub, says which account it uses and turns it off. (#242)
  • Show the pull request's checks, GitHub Actions runs and commit statuses, in its pill: how many fail, how many are done while they run, or a tick. The popover lists them failing first with their logs, says when they ran without your local changes, and follows running checks every 15 seconds while the window is in front. (#246)
  • Show the pull request in the status bar instead of the title bar, with Settings, under GitHub: its state, failing checks, unpushed commits and conflicts in words, and the same popover. (#249)
  • Open a command palette with Cmd+K (View › Command Palette…) to find a command by name instead of through the menus: it lists the commands that apply to the review with their shortcut, and checks those that show a state, such as Split or Ignore Whitespace. (#251)
  • Jump to a file of the review by name with Cmd+P (Go › Go to File…): the palette lists the files with their folder, line counts and status, and Commands and Files tabs switch between the two lists. (#253)

🐛 Fixes

  • Comment on every line of a selection that runs from added or unchanged lines into removed ones, instead of only the line where it ended: it now covers the lines of the new file it spans, as does a selection dragged across the columns of the split view. (#248)
  • Stop a base picked in the window from emptying a branch's reviews for good: the base is now dimmed text in the title bar, so a click meant for the reviewed branch no longer opens the base picker, the pickers open on the current choice so Enter alone changes nothing, and a picked base holds for the review shown instead of being written to .git/config. Automatic base drops it, and a review whose base already contains the whole branch says so and offers the automatic base. Bases that earlier releases remembered in branch.<name>.ghlBase are ignored. (#218)
  • Read the review whatever diff prefixes Git is configured with (diff.mnemonicPrefix, diff.noprefix, diff.srcPrefix), instead of losing Viewed, comments and context on every file; with diff.suppressBlankEmpty, comments after a blank line now anchor on the right code. (#184)
  • Open the window when ghl is launched from the Finder, Spotlight or the Dock, instead of failing with "Could not open repository"; error dialogs show the message rather than the server's JSON, and a ghl run while the app quits opens in a new window instead of being lost. (#185)
  • Keep reviews and ghl comments working after a crash left the state lock behind, and in reftable repositories: only writes lock the state now, with a lock the system releases when a process dies. Reading a corrupt state no longer moves it aside; the next comment or Viewed change does. (#186)
  • Keep the review's keys and position right when the comparison changes: an open comment whose line leaves the diff no longer blocks the single-letter shortcuts, j, k and v follow the file you scrolled to, search no longer jumps back to a match when you tick Viewed, context still expands after a failed refresh, and a Viewed tick survives switching tabs while it saves. The target picker is labelled as such, and the comments panel lists files in the tree's order. (#187)
  • Refuse review writes that are not JSON, so a web page served on another localhost port can no longer add or delete comments or change Viewed. (#188)
  • Review and export comments during a merge, rebase, cherry-pick or revert, with a warning naming the conflicted files; a stopped rebase keeps the branch's comments. Untracked symlinks, special files and files over 20 MB are left out with a notice instead of failing the review, comments on non-UTF-8 lines no longer turn stale, file names with a backslash can be commented on, and image previews work in folders whose name holds #, ? or %. (#189)
  • Expand context and keep comments fresh on files with a textconv driver or a CRLF checkout (eol=crlf, core.autocrlf), instead of asking for a refresh every time. Files are shown as Git stores them, without textconv, and files other filters such as Git LFS rewrite say context is unavailable. (#190)
  • Keep a file's header opaque to its corners while it stays at the top of a scrolled review, instead of letting the code show through its rounded top left. (#199)

📦 Distribution

  • Build with Go 1.27.3, which fixes standard library vulnerabilities in net/http, crypto/x509 and os. brew uninstall --cask --zap ghl also removes the app's caches and web data, and the installation guide covers downloading the zip from the release page. Releases run one at a time and never move the cask back to an older version. (#191)
  • Run the app on Wails v3 (v3.0.0-beta.34) instead of Wails v2: with two reviews open it uses 16 to 46 MiB less memory, and switching reviews is slightly faster. (#207)