Skip to content

Releases: vmaerten/diffdesk

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 10:54
0a8f2ce

✨ Features

  • Read a Markdown file rendered: its card header switches between Source and Rendered, which shows headings, lists, GFM tables and code blocks, and marks the blocks that hold added lines. Comments stay on source lines; viewing one, or a search match, switches back to Source. (#302)
  • Wrap long lines instead of scrolling each file sideways, with View → Wrap Lines, Option+z or the command palette; Settings offers the same choice under Code, and it is kept across reviews and restarts. (#303)
  • Comment on a whole file, from its header, its context menu or Review → Comment on File…, or on the whole review, from the comments panel's + or Review → Comment on Review…. They are written and listed in the panel, review comments first, and Copy and diffdesk comments include them as path (whole file) and (whole review). (#305)

🐛 Fixes

  • Close the title bar's Options popover with Escape, which returns the focus to its button; opening a picker or running a menu command also closes it. (#304)

📦 Distribution

  • Point the cask, the update check and mise at the renamed vmaerten/diffdesk repository. Updating from the app moves a mise install made as github:vmaerten/ghl to github:vmaerten/diffdesk, and removes the old name from the global mise config while keeping its files; mise uninstall --all github:vmaerten/ghl deletes them. (#267)

🔧 Internal

  • Move the Go module to github.com/vmaerten/diffdesk and rename the GHL_* development and test variables to DIFFDESK_*. (#267)

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 09:06
ce2a81c

✨ Features

  • Review an update in a centred sheet instead of a banner: the release notes are shown in full and scroll when long, and the sheet offers Skip This Version, Remind Me Later and Update and Restart, with the restart warning in place of a second confirmation. A skipped version is no longer offered at startup; a newer one or a manual check still is. The command palette (Cmd+K) gains Check for Updates…, and Update to X and Restart… while an update is pending. The sheet takes the focus, on the notes rather than a button, and an open comment draft keeps its text and gets the focus back. (#286)
  • Install a missing language server from the app: IntelliSense and Settings offer Install with the first available manager (mise, Homebrew, or the language's own tool such as uv, go or rustup), a menu of the others and Copy Command. Installs are global and never change the reviewed project's files; a failed install keeps its output, with Try Again. (#289)
  • Read the IntelliSense status at a glance: one row per language with its server, version and state, the context on one line with the rest under Details, and a banner for what blocks every language. When IntelliSense is off, Turn On enables it from the sheet. (#288)
  • Zoom the whole interface with View → Zoom Out / Zoom In (Cmd+- / Cmd++), in 10% steps from 50% to 200%, and Actual Size (Cmd+0); the command palette offers the same actions. Reloading or restarting restores 100%. (#284)

🐛 Fixes

  • Keep the reading position when the review page reloads after its renderer dies: the view is now saved while reading, not only at Cmd+R. With Debug logging on, the renderer's termination is recorded in the log. (#285)
  • List the hovered use among a Python symbol's references with pyright and basedpyright, which left it out. (#292)
  • Keep an open Settings window in step with settings saved from another window, instead of writing its stale values back on its next change. (#288)

📚 Documentation

  • Record the language server measurements (first hover, references and memory for tsrs, tsc, basedpyright, pyright, ty and gopls) behind the order of servers in Auto. (#291)

🔧 Internal

  • Check the window size only at startup in the native smoke test. (#282)

v0.8.0

Choose a tag to compare

@vmaerten vmaerten released this 28 Oct 16:21
d9e081c

✨ Features

  • Use code intelligence on any reviewed branch or commit: Diffdesk prepares an isolated copy of the displayed revision for symbol information, definitions and references, while keeping your checkout and uncommitted edits intact. Copies are reused and cleaned up when the app stops; the IntelliSense diagnostic shows the analyzed version and its location. Project dependencies are not installed automatically. (#278)

🐛 Fixes

  • Open the window maximised from the terminal, Finder or Dock, instead of leaving it at 1280 × 800. The zoom button still restores that default size. (#280)

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 28 Oct 08:46
19d0cbd

🐛 Fixes

  • Let Homebrew manage its metadata refreshes during in-app updates: Diffdesk now runs only brew upgrade --cask vmaerten/tap/diffdesk, without forcing a separate brew update first. (#279)

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 16:42
c58140d

✨ Features

  • Update Diffdesk from the app: a bottom banner offers new stable releases without interrupting the review. Choose Later to keep working, or Update…, then Update and Restart, to install through Homebrew or mise and reopen the active comparison. Diffdesk → Check for Updates… checks on demand; progress and retryable errors stay in the banner. Save drafts before restarting. (#276)
  • Read the proposed release’s changelog under What’s new in… before confirming an update, with headings, lists, code and links. The notes and update status stay available after reloading the review. (#276)

🔧 Internal

  • Accept renamed repository asset URLs when validating published releases through mise. (#275)

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 11:06
32c583a

✨ Features

  • Enable Debug logging in Settings, under Window, to record clicks, mouse buttons, keyboard actions, comments, navigation and scrolling in a local file across reloads and restarts. Every event is kept until you clear the logs from the same pane, which also copies them with the app and WebView versions. Typed text, clipboard contents and source code are excluded. (#272)
  • Start a diff search with the selected source text when pressing Cmd+F, and replace an open search with a new selection. (#270)
  • Check why code intelligence is unavailable with Check IntelliSense Status… in the command palette (Cmd+K): see the checkout and target, whether the working tree is included, and each language server's state, path, errors and installation command. The diagnostic explains that choosing a target branch does not check it out. (#271)

🐛 Fixes

  • Hide Git status dots on folders in the file tree, keeping status indicators on individual files. (#269)
  • Keep truncated file and folder names legible in the translucent sidebar, instead of drawing the ellipsis over the remaining letters. (#273)
  • Point the comparison arrow from the reviewed target toward its base, matching the direction of the merge. (#268)

📚 Documentation

  • Explain how to trust the renamed Diffdesk cask before upgrading a Homebrew installation from ghl. (#266)

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 08:31
9ac0ca9

💥 Breaking changes

  • Rename the app Diffdesk, with a new icon: a D cut in two, red for the base and green for the target. The app is Diffdesk.app and its command diffdesk; Homebrew and task install still link ghl beside it, but mise puts only diffdesk on PATH. Comments and Viewed stay in .git/ghl/state.json, settings move to ~/Library/Application Support/Diffdesk and are read from ghl until the first change, and the sidebar and panel widths start over once. (#260)

🐛 Fixes

  • Draw tabs two columns wide in the symbol card and the Symbol panel, as the diff does, instead of eight, which spread a Go struct across the card. (#262)

📦 Distribution

  • Publish diffdesk_<version>_darwin_arm64.zip and the diffdesk cask, which replaces the ghl cask. Homebrew trusts a cask by name: run brew update and brew trust --cask vmaerten/tap/diffdesk, then brew upgrade --cask diffdesk replaces ghl.app with Diffdesk.app, and rm -rf "$(brew --caskroom)/ghl" removes the empty ghl entry it leaves behind. mise keeps the github:vmaerten/ghl tool. The site moves to diffdesk.vmaerten.fr. (#260)

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:16
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](...
Read more

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 09:08
2156b06

🐛 Fixes

  • Open the review when ghl runs with another or no TMPDIR, as in some tool environments, instead of failing with "the ghl app did not start". (#178)

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 22:00
14e4834

ghl is now a macOS app. ghl opens or activates a review tab in one native window instead of serving the review to a browser. Comments and Viewed stay in the same .git/ghl/state.json, and settings saved by the earlier ghl Desktop build are read until the first change.

💥 Breaking changes

  • Replace the browser CLI, its shared daemon on port 7777 and the ghl.localhost URLs with the app's own window. ghl comments [--json] and ghl --version [--json] still print in the terminal; --port, --no-open, --no-daemon, --idle, --print, --import-state and GHL_PORT are removed. (#167, #169, #171)
  • Ship one archive, ghl_<version>_darwin_arm64.zip with ghl.app, for macOS 13 or later on Apple Silicon. Linux and macOS Intel stay on 0.2.0. (#172)

✨ Features

  • Review in a macOS-style window: review tabs in a unified title bar holding the comparison controls, a translucent file sidebar, files as cards, a comments side panel beside the diff, a status bar and native menus. (#155–#164)
  • Choose the appearance (System, Light or Dark), a syntax theme for each mode and the code font and size in Settings. (#157)

🐛 Fixes

  • Open every review requested while the app is still starting, once each; a launch that cannot reach the app now fails with an error instead of returning silently. (#136)

📦 Distribution

  • Install with Homebrew, brew install --cask vmaerten/tap/ghl, or keep mise's github:vmaerten/ghl, which moves to the app on upgrade. (#173)