Skip to content

GitCrisp v1.3.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:21
· 149 commits to master since this release
d942b52

What's Changed

  • Build hunk patches that git apply accepts byte for byte by @Aidan79225 in #182
  • Keep the commit graph loading when a dirty file name is non-ASCII by @Aidan79225 in #181
  • List only the commits an interactive rebase would replay by @Aidan79225 in #183
  • Keep blame lines beside their commits in files with form feeds by @Aidan79225 in #184
  • Show non-ASCII file names as written in Insight by @Aidan79225 in #185
  • Split the commit graph's page walk into named steps by @Aidan79225 in #186
  • Stage and discard symlinks whose target is missing by @Aidan79225 in #187
  • Pin cherry-pick, revert and file history to a given gitdir by @Aidan79225 in #188
  • Make file history's git log honour the exact path and rename choice by @Aidan79225 in #189
  • Respect the user's own SSH client for remote operations by @Aidan79225 in #190
  • Remove the open worktree without leaving an empty folder by @Aidan79225 in #191
  • Show and edit the URL of a submodule named unlike its path by @Aidan79225 in #192
  • Remove only the chosen submodule when its path has glob characters by @Aidan79225 in #193
  • Delete a removed submodule's repository so its path can be reused by @Aidan79225 in #194
  • Stop clones hanging on submodule output and show why they fail by @Aidan79225 in #195
  • Decode git's push, fetch and remote tag output as UTF-8 (+1 related) by @Aidan79225 in #196
  • Keep cached remote tags when the remote cannot be listed by @Aidan79225 in #197
  • Leave the repository as it was when a checkout is refused (+1 related) by @Aidan79225 in #198
  • Create a branch from a typed start point such as HEAD or a tag by @Aidan79225 in #199
  • Apply interactive rebase choices in the installed app by @Aidan79225 in #200
  • Keep the chosen message and the banner through a conflicted merge by @Aidan79225 in #201
  • Make "Interactive rebase onto " land on that branch by @Aidan79225 in #202
  • Save the commit identity without flashing console windows by @Aidan79225 in #203
  • Decode git's output as UTF-8 so its messages survive non-ASCII by @Aidan79225 in #204
  • Let Add Worktree use an empty folder or a reused folder name (+7 related) by @Aidan79225 in #205
  • Keep git from waiting on the terminal the app was started from by @Aidan79225 in #206
  • Add GitCliConfig to ask git whether an ssh command is set by @Aidan79225 in #207
  • Read and write worktree locks through one helper by @Aidan79225 in #208
  • Clone with the user's own configured ssh command (+1 related) by @Aidan79225 in #209
  • Define RemoteOperationCancelled beside the port that promises it by @Aidan79225 in #210
  • Keep Cancel aimed at the running push, pull or fetch by @Aidan79225 in #211
  • Split get_tags into annotated and lightweight tag readers by @Aidan79225 in #212
  • Let a running clone be cancelled and clean up its folder by @Aidan79225 in #213
  • Declare forget on the repo store port by @Aidan79225 in #214
  • Finish an interactive rebase that picks a commit the target has by @Aidan79225 in #215
  • Share the rebase editor's temp-file handling by @Aidan79225 in #216
  • Keep launching when the last active repo will not open by @Aidan79225 in #217
  • Stop adding an active worktree to the open repo list at launch by @Aidan79225 in #218
  • Keep repos on unmounted drives and start on the first that opens by @Aidan79225 in #219
  • Keep the commit list's place across reloads and branch clicks by @Aidan79225 in #220
  • Run a graph reload requested while another load is in flight by @Aidan79225 in #221
  • Let a click on a previously selected commit reach the diff pane (+7 related) by @Aidan79225 in #222
  • Show no hash on the uncommitted-changes row by @Aidan79225 in #223
  • Redraw the graph even when the first-parent choice cannot be saved by @Aidan79225 in #224
  • Never lose the repo list to a broken or half-written repos.json by @Aidan79225 in #225
  • Wrap, elide and lay out commit row text so nothing overlaps by @Aidan79225 in #226
  • Colour local branches with a slash as local in the commit graph by @Aidan79225 in #227
  • Stop right-clicks in the changed-files list from staging files by @Aidan79225 in #228
  • Commit with the right message after a repo switch, merge or checkout by @Aidan79225 in #229
  • Skip the word-level highlight on very long changed lines by @Aidan79225 in #230
  • Show "No newline at end of file" as one unnumbered line by @Aidan79225 in #231
  • Pair each removed line with its counterpart in unified word diffs by @Aidan79225 in #232
  • Keep highlights on their characters after an emoji or a BOM by @Aidan79225 in #233
  • Load both blocks of a path a commit lists twice by @Aidan79225 in #234
  • Fix and tidy the diff views and the working-tree panel (part 1 of 3) by @Aidan79225 in #235
  • Fix and tidy the diff views and the working-tree panel (part 2 of 3) by @Aidan79225 in #236
  • Fix and tidy the diff views and the working-tree panel (part 3 of 3) by @Aidan79225 in #237
  • Report why a hunk could not be staged, unstaged or discarded by @Aidan79225 in #238
  • Discard a file through git restore, work tree first by @Aidan79225 in #239
  • Resolve a modify/delete conflict when its file is staged or discarded by @Aidan79225 in #240
  • Show and stage a file replaced by a symlink as one change by @Aidan79225 in #241
  • Diff the index against HEAD through one shared helper by @Aidan79225 in #242
  • Drop the slash-means-remote fallback and dead badge code (+1 related) by @Aidan79225 in #243
  • Give the graph painters one definition of badge, row and lane sizes by @Aidan79225 in #244
  • Let the theme decide how many lane colours the graph cycles through by @Aidan79225 in #245
  • Set up GraphModel's listing in one place by @Aidan79225 in #246
  • Build the commit view and its all-files render in named steps by @Aidan79225 in #247
  • Simplify the working-tree panel's Stage All and Commit handlers by @Aidan79225 in #248
  • Lay out a working-tree file's hunks in one place by @Aidan79225 in #249
  • Share the diff renderers' scheduler and split them into named steps by @Aidan79225 in #250
  • Keep the no-newline marker set in the domain beside LineKind by @Aidan79225 in #251
  • Name the message chevron and hunk checkboxes for screen readers by @Aidan79225 in #252
  • Keep the sidebar on the open repo when a load is late or fails by @Aidan79225 in #253
  • Report a failed Checkout from the sidebar branch menu by @Aidan79225 in #254
  • Build the pushed-tag cloud icon once per sidebar reload by @Aidan79225 in #255
  • Make drag-to-reorder work again in the repository list (+2 related) by @Aidan79225 in #256
  • Resize the REPOSITORIES title when the text scale changes by @Aidan79225 in #257
  • Share one row-highlighting tree between sidebar and repo list by @Aidan79225 in #258
  • Accept repo drops only inside the OPEN section by @Aidan79225 in #259
  • Keep author avatars loading after network or disk errors by @Aidan79225 in #260
  • Colour author avatars from the theme with readable initials by @Aidan79225 in #261
  • Stop and free Git Insight when its dialog closes by @Aidan79225 in #262
  • Count Git Insight's date ranges in local time (+1 related) by @Aidan79225 in #263
  • Read block positions only once the scroll content fits its blocks by @Aidan79225 in #378
  • Build each sidebar section in its own method by @Aidan79225 in #264
  • Load the blamed line's commit on the first pick by @Aidan79225 in #265
  • Keep blame from freezing the window on large files by @Aidan79225 in #266
  • Keep blame's syntax colours aligned after an emoji by @Aidan79225 in #267
  • Re-measure the blame gutter when the typography scale changes by @Aidan79225 in #268
  • Let the blame column narrow below the length of its file path by @Aidan79225 in #269
  • Keep blame's gutter beside its line after a lone carriage return by @Aidan79225 in #270
  • Stop setting a window title on the blame pane nobody can see by @Aidan79225 in #271
  • Cut a long commit author before the timestamp in the commit header by @Aidan79225 in #272
  • Keep the reflog pane stable when the window reloads it by @Aidan79225 in #274
  • Keep operations log error and link colours across a theme change by @Aidan79225 in #273
  • Name the reflog operation colours by ColorRole by @Aidan79225 in #275
  • Drop the reflog model's unused show_all keyword and OID role by @Aidan79225 in #276
  • Write operations log link rows through one routine by @Aidan79225 in #277
  • Lay out the commit header once for both painting and clicks by @Aidan79225 in #278
  • Keep Remote Branches locked while a delete is running by @Aidan79225 in #279
  • Delete remote branches on remotes whose names contain a slash by @Aidan79225 in #280
  • Move the remote-branch name split into the domain by @Aidan79225 in #281
  • Type interactive rebase todo entries with a named action set by @Aidan79225 in #282
  • Keep the remote-branch delete report on screen with many failures by @Aidan79225 in #283
  • Show angle brackets literally in the reset confirmation by @Aidan79225 in #284
  • Add submodules without freezing the window by @Aidan79225 in #285
  • Close Worktrees on Open and let its owner refresh the list by @Aidan79225 in #286
  • Detect the clone folder name from a Windows path by @Aidan79225 in #287
  • Let Cancel stop a running clone and never open it (+1 related) by @Aidan79225 in #288
  • Create a branch from a branch name in the Branches dialog by @Aidan79225 in #289
  • Move whole rows when reordering the interactive rebase list by @Aidan79225 in #290
  • Block a rebase whose first kept commit is a squash or fixup by @Aidan79225 in #291
  • Tell the user when saving their git identity fails by @Aidan79225 in #292
  • Offer to switch to the worktree that already has the branch (+1 related) by @Aidan79225 in #293
  • Restructure the Add Worktree dialog's constructor and refreshes by @Aidan79225 in #294
  • Name the interactive rebase table's columns and action lookup by @Aidan79225 in #295
  • Keep each rebase row's full commit id with the row by @Aidan79225 in #296
  • Split the interactive rebase dialog's constructor by region by @Aidan79225 in #297
  • Build interactive rebase entries from the RebaseAction enum by @Aidan79225 in #298
  • Drop the merge dialog's unreachable fast-forward-only check by @Aidan79225 in #299
  • Pass Preferences the function that applies crash reporting by @Aidan79225 in #300
  • Split Remote Branches' refresh and delete into named steps by @Aidan79225 in #301
  • Keep Delete off when Remote Branches cannot load its remotes by @Aidan79225 in #302
  • Fall back to Dark when the custom theme file is malformed by @Aidan79225 in #303
  • Save a reapplied custom theme without the active theme's colours by @Aidan79225 in #304
  • Tell the user when Appearance settings cannot be saved by @Aidan79225 in #305
  • State why a saved Custom theme keeps Dark's typography by @Aidan79225 in #306
  • Stop the checkbox tick file from breaking launch or the theme by @Aidan79225 in #307
  • Keep widgets' own fonts when the theme is applied by @Aidan79225 in #308
  • Make the merge and rebase banner readable in the dark theme by @Aidan79225 in #309
  • Keep the old text scale when Apply fails to save a custom theme by @Aidan79225 in #310
  • Repaint the Appearance swatches from one place by @Aidan79225 in #311
  • Draw the Appearance swatch borders in the outline colour by @Aidan79225 in #312
  • Simplify ThemeManager's refresh and apply steps by @Aidan79225 in #313
  • Map file status badges to their colours with an explicit table by @Aidan79225 in #314
  • Name the theme modes with a ThemeMode enum by @Aidan79225 in #315
  • Auto-refresh a repository opened from a subdirectory by @Aidan79225 in #316
  • Open the log when a worktree operation fails by @Aidan79225 in #317
  • Keep Add Worktree from offering a branch already checked out by @Aidan79225 in #318
  • Show current worktree lists at launch and in the Worktrees dialog by @Aidan79225 in #319
  • Retire Undo links when the window leaves their repository by @Aidan79225 in #320
  • Refresh an open reflog pane on every reload by @Aidan79225 in #321
  • Show the open repo's merge/rebase state in the banners by @Aidan79225 in #322
  • Explain failed loads and setting saves in the operations log by @Aidan79225 in #323
  • Drop two dead bits from the main-window mixins by @Aidan79225 in #324
  • Refuse to open an uninitialized submodule instead of its parent by @Aidan79225 in #325
  • Keep the repo list in step when repos open, switch and close by @Aidan79225 in #326
  • Report a reordered repo list that cannot be saved by @Aidan79225 in #327
  • Run add, lock, unlock and remove worktree through one helper by @Aidan79225 in #328
  • Describe worktree_cli.py as the wrapper for worktree add and remove by @Aidan79225 in #329
  • Release the previous repository when the Git menu is rebuilt by @Aidan79225 in #330
  • Open the worktree that holds a branch instead of half-checking it out by @Aidan79225 in #331
  • Keep edits and the right Undo when checkout resets to the remote by @Aidan79225 in #332
  • Confirm before deleting a local branch or dropping a stash by @Aidan79225 in #333
  • Log a failed commit merge and ask for a git identity before merging by @Aidan79225 in #334
  • Merge a branch and a commit through one merge-into-HEAD flow by @Aidan79225 in #335
  • Offer to force push the branch whose push was rejected by @Aidan79225 in #336
  • Keep main-window actions on the right repo and show their failures (part 1 of 2) by @Aidan79225 in #337
  • Keep main-window actions on the right repo and show their failures (part 2 of 5): remote work stays in the repo it was started in by @Aidan79225 in #338
  • Keep main-window actions on the right repo and show their failures (part 3 of 5): a confirmed delete or reset runs only in the repo it was asked about by @Aidan79225 in #379
  • Keep main-window actions on the right repo and show their failures (part 4 of 5): the remaining prompts, and the remote-branch delete's skip message by @Aidan79225 in #380
  • Keep main-window actions on the right repo and show their failures (part 5 of 5): pull without a remote listing, and one path for tag-cache refreshes by @Aidan79225 in #381
  • Keep deleting a tag from the other remotes when one fails by @Aidan79225 in #339
  • Route the sidebar's Checkout through the window's checkout flow by @Aidan79225 in #340
  • Describe the checkout flow that handles a worktree-held branch by @Aidan79225 in #341
  • Close Branches and hand checkouts to the window's checkout flow by @Aidan79225 in #342
  • Share one worktree lookup and split the checkout flow into steps by @Aidan79225 in #343
  • Disable the Git menu items while no repo is open by @Aidan79225 in #344
  • Keep local variables, hostname and home path out of crash reports by @Aidan79225 in #345
  • Keep logging and log backups when two GitCrisp windows run by @Aidan79225 in #346
  • Read the bundle-version tests' files as UTF-8 by @Aidan79225 in #347
  • Fix or drop tests in seven places that could not fail by @Aidan79225 in #348
  • Test that each operation's Undo link returns to the prior HEAD by @Aidan79225 in #349
  • Check theme switches on the stylesheets they actually apply by @Aidan79225 in #350
  • Drive the commit list's real context menu in its menu tests by @Aidan79225 in #351
  • Delete a remote branch on the remote that actually holds it by @Aidan79225 in #352
  • Remove dead commit-list code and a comment naming a missing method by @Aidan79225 in #353
  • Compare the repo state against RepoState in the commit list by @Aidan79225 in #354
  • Reset the commit list on a repo switch through its paging reset by @Aidan79225 in #355
  • Look up a commit's row in the commit list through one helper by @Aidan79225 in #356
  • Build the commit menu's one-or-submenu entries in one place by @Aidan79225 in #357
  • Split the commit list's reload handler into named steps by @Aidan79225 in #358
  • Hover commit rows with the theme's hover overlay colour by @Aidan79225 in #359
  • Use the status enums in tests and drop the migration story by @Aidan79225 in #360
  • Lay out the unlinked-submodule fixture as git submodule add does by @Aidan79225 in #361
  • Run cherry-pick, revert and file history in the opened repository by @Aidan79225 in #362
  • Show file history and run cherry-pick in a bare repository by @Aidan79225 in #363
  • Raise CommitOpsCommandError for every failed cherry-pick or revert by @Aidan79225 in #364
  • Keep test runs out of the real AppData and cache folders by @Aidan79225 in #365
  • Identify Git Insight's ranges by an enum, not button captions by @Aidan79225 in #366
  • Let the sidebar and Git Insight take a background runner by @Aidan79225 in #367
  • Fix three tests that pass or fail by run order or timing by @Aidan79225 in #368
  • Make the submodule-open and repo-list save tests able to fail by @Aidan79225 in #369
  • Pin every test repo's first branch to master by @Aidan79225 in #370
  • Build the bare MainWindow for tests in one shared helper by @Aidan79225 in #371
  • Keep the test suite away from Sentry and the GitHub API by @Aidan79225 in #372
  • Test the commit list and working tree on their real widgets by @Aidan79225 in #373
  • Drop the identity dialog tests' redundant app helper by @Aidan79225 in #374
  • Bump ruff from 0.16.10 to 0.17.1 in the dev-deps group by @dependabot[bot] in #375
  • Bump sentry-sdk from 2.71.0 to 2.72.0 by @dependabot[bot] in #376

Full Changelog: v1.2.0...v1.3.0