* Magit v4.0.0 Release Notes

Released 8th August 2024 by Jonas Bernoulli.

I am pleased to announce the release of Magit version 4.0.0,
representing 1077 commits by 69 contributors over three years.

Also see https://emacsair.me/2024/08/09/magit-4.0.

** Breaking changes

- Dropped support for Emacs 25.  7c794201c4

- Removed several functions, variables and variable values that were obsoleted
  in past releases:
  - bc18ba942f Removed ~git-commit-fill-column~, obsolete since v2.11.0
  - 6b4f7f5811 Removed ~magit-section-when~, obsolete since v2.90.0
  - a8c92cc35d Removed face aliases, obsolete since v2.12.0 and v3.0.0
  - ed8067830f Removed variables and functions obsolete since v3.3.0
  - 553968346d Removed support for obsolete ~magit-branch-rename-push-target~ values
  - b47efecfe6 Removed support for obsolete %-sequence in ~magit-branch-name-format~

- Removed library ~magit-libgit.el~, which was only a proof-of-concept, without
  Magit actually making use of it.  Packagers were discouraged from including
  this library in the Magit package, but many disregarded that.  Because that
  caused issues for many users, it had to be removed.  c9fd81217c, 703dfe5812

- Completed the switch to a new ~magit-completing-read-multiple~ implementation.
  a162b8a71e

** Changes since v3.3.0

- Added many context menus, which can be invoked using the mouse or a key
  (~menu~ by default) and are a great way to discover context sensitive commands.
  Context menus were added in Emacs 28.1 and are disabled by default.  Enable
  ~context-menu-mode~ or set ~magit-section-show-context-menu-for-emacs<28~ to ~t~,
  if you are still using an older release.  [[https://github.com/magit/magit/issues/4645][#4645]]

- The menu-bar menu, which was severely neglected for many years, finally got a
  makeover.  It no longer offers a completely random subset of Magit's features.
  Now it can be used to invoke most of the commands that could also be invoked
  using ~magit-dispatch~; but by means of a small furry animal.  5641d3749c

- Rewrote Imenu support, which resulted in a few new features and much less
  code.  4727dcbe22 ff

- Move imenu and bookmark support to the independently distributed ~magit-section~
  package, so that it can be used by third-party packages, without having to
  depend on the ~magit~ package.  [[https://github.com/magit/magit/issues/5104][#5104]]

- One does not simply change key bindings; at least not as a package maintainer.
  ~magit-define-global-key-bindings~ used to be a boolean, now it can be set to
  ~recommended~, to opt in to new easier top-level bindings, which do not require
  changing modifiers mid-sequence.  8b1f599de4

- For the longest time (which is why I don't consider this a bug fix) toggling
  a section caused point to move to the beginning of that section.  Stop doing
  that, unless absolutely necessary.  9d8d5e5603

- Added support for displaying errors that occur when washing a section.
  Use that for diff and log buffers, so users can investigate what went wrong.
  78a979fde5, 2bd3db69d6, d05b1ed381, a760dd1078

- Massively reduced the expansion of the essential macro ~magit-insert-section~,
  moving most work to new support functions. [[https://github.com/magit/magit/issues/5130][#5130]] 13e4422584..058ca81497,
  ee6fbba360..e2ca80a26e, 3695493ce8..f7cba11588

- Avoid expensive and/or unnecessary work, including:
  - 8606488578 magit-save-repository-buffers: Rev-parse only once per directory
  - ff4710afa6 Deprecate magit-git-dir to avoid needlessly repeating work
  - e94b6ebfdb [[https://github.com/magit/magit/issues/4900][#4900]] Record diff-type in magit-diff-mode buffers
  - 6852936364 [[https://github.com/magit/magit/issues/4768][#4768]] magit-wip-mode: Speedup activation by avoiding duplicated work
  - 241b327b7a [[https://github.com/magit/magit/issues/4974][#4974]] Don't use markers in log buffers
  - d536ef9e21 Don't preserve visibility in log buffers
  - Limit use of log graphs and signature verification.  545a64c3ee, e32cec06a4
  - d73a3b11db Record child sections in reverse in log buffers
  - 6014320c3e magit-module-confirm: Use refresh cache
  - fef45b274e magit-insert-child-count: Minor performance tweak
  - 4ec4d0272e magit-insert-section--finish: Optimize propertizing leaf sections
  - 54d969b62f magit-insert-section--finish: Optimize for leaf sections
  - 5544bac955 magit-insert-section--finish: Avoid unnecessary work for root section
  - ~magit-turn-on-auto-revert-mode-if-desired~ performs cheaper checks first now.
    [[https://github.com/magit/magit/issues/4591][#4591]]
  - For performance reasons the "margin" style sadly had to be removed from
    ~magit-blame-styles~.  608242086e

- Added new commands ~git-commit-co-developed~ and ~git-commit-insert-trailer~
  (menu) [[https://github.com/magit/magit/issues/4810][#4810]], ~git-commit-search-message-backward~ and
  ~git-commit-search-message-forward~ [[https://github.com/magit/magit/issues/4537][#4537]], ~git-rebase-update-ref~ [[https://github.com/magit/magit/issues/4776][#4776]],
  ~magit-back-to-indentation~ [[https://github.com/magit/magit/issues/5183][#5183]], ~magit-git-mergetool~ [[https://github.com/magit/magit/issues/4128][#4128]],
  ~magit-jump-to-ignored~ 550d99d86d, ~magit-log-related~ c33ed664e6,
  ~magit-mouse-toggle-section~ 949b4a47a4, ~magit-profile-refresh-buffer~
  d520ce3306, ~magit-repolist-fetch~ [[https://github.com/magit/magit/issues/4453][#4453]], ~magit-repolist-find-file-other-frame~
  [[https://github.com/magit/magit/issues/4453][#4453]], ~magit-repolist-mark~ and ~magit-repolist-unmark~ [[https://github.com/magit/magit/issues/4453][#4453]],
  ~magit-smerge-keep-all~ [[https://github.com/magit/magit/issues/4756][#4756]], ~magit-stage-buffer-file~ ebd7a0635d,
  ~magit-stash-push~ (menu) [[https://github.com/magit/magit/issues/4583][#4583]], ~magit-toggle-git-debug~ 2ed5a06d08,
  ~magit-unstage-buffer-file~ ebd7a0635d, ~magit-update-default-branch~ 59833692ed,
  and others.

  - Added new transient menu ~magit-sparse-checkout~, which provides an interface
    to the ~git sparse-checkout~ command, introduced in Git v2.25.  [[https://github.com/magit/magit/issues/4102][#4102]]

  - Added new command ~magit-clone-sparse~, which makes it possible to clone
    a repository and then immediately enable a sparse checkout, avoiding a
    checkout of the full working tree.  [[https://github.com/magit/magit/issues/4102][#4102]]

  - Added new command ~magit-stash-push~, which allows specifying a list of
    files to be stashed.  [[https://github.com/magit/magit/issues/4583][#4583]]

  - Added new command ~magit-ediff-resolve-all~, an alternative to
    ~magit-ediff-resolve-rest~ (formerly known as ~magit-ediff-resolve~).  The
    new option ~magit-ediff-dwim-resolve-function~ controls which is used by
    ~magit-ediff-dwim~ (another new command, ~magit-git-mergetool~, can also be
    used).  [[https://github.com/magit/magit/issues/4348][#4348]]

  - ~magit-refresh-buffer~ is now defined as a command.  26eac2bcb0

- Added new infix arguments:
  - Added ~--diff-merges~ to ~magit-diff~ and ~magit-diff-refresh~.  [[https://github.com/magit/magit/issues/4989][#4989]]
  - Added ~--ff-only~ to ~magit-pull~.  f766f68f78
  - Added ~--filter~ to ~magit-clone~ (hidden by default) to support partial
    cloning, a feature that is available as of Git v2.17.  [[https://github.com/magit/magit/issues/4102][#4102]]
  - Added ~--force-rebase~ to ~magit-rebase~.  73b44644f6
  - Added ~--force~ to ~magit-fetch~ and ~magit-pull~.  [[https://github.com/magit/magit/issues/5162][#5162]]
  - Added ~--ignore-date~ to ~magit-rebase~.  7f03f572d5
  - Added ~--update-refs~ to ~magit-rebase~.  2fee806a01

- Added new hooks ~git-commit-post-finish-hook-timeout~ [[https://github.com/magit/magit/issues/4828][#4828]],
  ~magit-post-clone-hook~ [[https://github.com/magit/magit/issues/4849][#4849]], ~magit-post-create-buffer-hook~ 26eec13943, and
  ~magit-wash-message-hook~ 594bd14614.

- Added new options ~git-commit-cd-to-toplevel~ [[https://github.com/magit/magit/issues/4973][#4973]],
  ~magit-ediff-dwim-resolve-function~ 5a7519fd3d, ~magit-log-color-graph-limit~
  545a64c3ee, ~magit-log-merged-commit-count~ [[https://github.com/magit/magit/issues/4711][#4711]],
  ~magit-log-show-signatures-limit~ e32cec06a4, ~magit-openpgp-default-signing-key~
  4eed9e1a45, ~magit-process-timestamp-format~ [[https://github.com/magit/magit/issues/4920][#4920]],
  ~magit-revision-insert-related-refs-display-alist~ [[https://github.com/magit/magit/issues/4885][#4885]],
  ~magit-section-show-context-menu-for-emacs<28~ 0168be9366, and
  ~magit-verbose-messages~ 7fbf89cb52.

- Added new faces ~git-rebase-action~ [[https://github.com/magit/magit/issues/4544][#4544]], ~magit-branch-warning~ bf3bcbe051, and
  ~magit-section-child-count~ [[https://github.com/magit/magit/issues/4599][#4599]]; and added built-in faces ~diff-refine-added~
  and ~diff-refine-removed~ to the ~magit-faces~ custom group.

- Added new function ~git-commit-turn-on-orglink~, intended for use in
  ~git-commit-setup-hook~.  d122f15edd

- ~git-commit.el~ no longer depends on ~dash~.  bb7b7a4020

- Some repository and submodule list columns got a bit fancier.
  3f3980735f 451438dc90

- Refreshing a repository or submodule list buffer now restores the previous
  position.  1feda0cb1c

- Added new variable ~magit-submodule-list-predicate~. ceab3124fb

- ~magit-diff-dwim~ uses a more useful range when showing unpushed and unpulled
  changes.  9413847c1a

- When invoked with a prefix argument, ~magit-fetch-modules~ now acts as a
  transient prefix command.  fd5b9eadf3

- ~magit-cherry-branch~ now supports using a detached HEAD as source.  ff3269814c

- ~git-commit-save-message~ now reports whether the message was actually saved.
  dfe3d03a14

- Make use of ~with-connection-local-variables~, and for older Emacsen use a
  stripped down implementation. [[https://github.com/magit/magit/issues/4568][#4568]]

- Added some forward compatibility for SHA-256.  [[https://github.com/magit/magit/issues/4585][#4585]]

- Added ~magit-mode-bury-buffer~ to ~magit-dispatch~.  5a2624985a

- ~magit-tag-release~ learned to extract the version string from the HEAD commit's
  message.  429d5c55e8

- Improved version display and sorting in repository list buffers.
  53199f2dd5, 68be0584f4

- Added support for marking repositories in repository list buffers and acting
  on the marked repositories.  [[https://github.com/magit/magit/issues/4453][#4453]]

- Improved internals of the version/feature check caches.  On the user visible
  side, teach ~magit-zap-caches~ to zap everything, when invoked with a prefix
  argument.  [[https://github.com/magit/magit/issues/4603][#4603]]

- When blaming, neighboring chunks about the same commit are now combined into
  just one chunk.  [[https://github.com/magit/magit/issues/4030][#4030]]

- Taught ~magit-diff-dwim~ about commits of submodules shown in the status buffer
  of the super-repository.  [[https://github.com/magit/magit/issues/4151][#4151]]

- A cherry pick or revert can now be continued when there are unstaged changes
  as long as there are no unresolved conflicts, a behavior that more closely
  matches the command-line behavior.  [[https://github.com/magit/magit/issues/4615][#4615]]

- ~magit-ediff-read-files~ now tries to detect renames in one-file logs.
  b32521d543

- Increased use of section type, keymap and binding inheritance.
  70b34f08ab

- Depend on the Compat package, allowing me to use convenient features that were
  added to Emacs over the last few years, without having to wait another few
  years, until everybody has updated to a reasonably recent Emacs release.
  571b4346c1

- Tag messages and signatures are now turned into sections in commit buffers.
  476383fc8f

- Work has began on making internal circular dependencies between Magit
  libraries a thing of the past.

- The help text displayed in ~git-rebase-mode~ buffers got a makeover.
  670dad14b5 ff

- Improved the diff to be shown while committing is determined.  [[https://github.com/magit/magit/issues/3246][#3246]]

- ~magit-reverse~ is now permitted in diff buffers between HEAD and
  the working tree.  e94b6ebfdb [[https://github.com/magit/magit/issues/5090][#5090]]

- Registered a ~bookmark-handler-type~ for our handler.  adf5848ea7

- No longer exit transient while toggling margin or cycling styles.  bf0ef3826b

- ~magit-clone-url-format~ can now be configured to an alist to support servers
  that employ different URL schemes.  [[https://github.com/magit/magit/issues/4738][#4738]]

- Repositories hosted on Sourcehut can now be cloned by name.  [[https://github.com/magit/magit/issues/4741][#4741]]

- 564cff8a40 [[https://github.com/magit/magit/issues/4751][#4751]] magit-diff-wash-diffstat: Improve file rename identification
- ce0746ab9f [[https://github.com/magit/magit/issues/4743][#4743]] diff: Mention when a file is a binary
- 1c51352e6f [[https://github.com/magit/magit/issues/4785][#4785]] magit-branch-delete: Improve suggested branch for checkout
- 5d6c01e293 [[https://github.com/magit/magit/issues/4767][#4767]] magit-commit-squash-internal: Restore window conf after showing diff
- 74d14c2d10 magit-log-reflog-re: Handle "rewritten during rebase"
- 2653432bb5 [[https://github.com/magit/magit/issues/4776][#4776]] git-rebase: Support update-ref action
- 161ab48520 [[https://github.com/magit/magit/issues/4810][#4810]] git-commit: Add "Co-developed-by" header
- 99d9b3008a magit-long-lived-branches: New variable
- cd6fbe2887 [[https://github.com/magit/magit/issues/4837][#4837]] magit-branch-read-args: Read another name if chosen branch exists
- 410e4583e0 [[https://github.com/magit/magit/issues/4181][#4181]] Enable navigating broken sections
- b7daf6a2ff [[https://github.com/magit/magit/issues/4905][#4905]] magit-branch-delete: Improve "also on remote?" prompt
- dd2e870b13 [[https://github.com/magit/magit/issues/4823][#4823]] magit-save-repository-buffers: Wip commit all files at once
- b2c4a26b5b [[https://github.com/magit/magit/issues/4923][#4923]] magit-diff-show-or-scroll: Also handle tags
- 85d0554f4f [[https://github.com/magit/magit/issues/4920][#4920]] Optionally display process start time in margin of process buffers
- 2f3740ab68 [[https://github.com/magit/magit/issues/4786][#4786]] If bisect was invoked with --first-parent, use it for rest log too
- 25dbf32d86 [[https://github.com/magit/magit/issues/4781][#4781]] Perform checkouts asynchronously
- 152478b01f magit-branch-or-commit-at-point: Get from unpushed/unpulled sections
- e38500b590 git-commit-header-line-format: New variable
- 09f600fdcd..ebd7a0635d Improved commands for staging and unstaging files.
- 2c2b34d7ac [[https://github.com/magit/magit/issues/4966][#4966]] magit-file-{ignore,tracked}-p: Convert filename for git
- decd5f40dd [[https://github.com/magit/magit/issues/4970][#4970]] magit-stash-pop: Use pop instead of apply
- b3f7e24616 magit-map-sections: New function
- 667deaa74e magit-stage-file: Support staging ignored files
- d46270cb65 [[https://github.com/magit/magit/issues/4990][#4990]] git-commit-setup-font-lock: Set comment-end to the empty string
- 7d4092f00b Apply stash even if "git stash apply" cannot do it
- 186414ae41 [[https://github.com/magit/magit/issues/4998][#4998]] When inserting pseudo header, always prompt with a prefix argument
- ace5ca4401 [[https://github.com/magit/magit/issues/4999][#4999]] magit--imenu-goto-function: New function
- 27099441a0 [[https://github.com/magit/magit/issues/5000][#5000]] Offer textual range at point as next history element
- ae7f5e9fb4 magit-log-refresh: No longer exit transient after any margin command
- dd14e0c3c6 [[https://github.com/magit/magit/issues/5027][#5027]] git-commit: Ignore leading comment when inserting headers
- b436ad3830 git-commit: Replace the term "(pseudo) header" with "trailer"
- 72fbb3a579 magit-stash-read-message: Provide a default instead of magic
- 51f04d6826 [[https://github.com/magit/magit/issues/5042][#5042]] magit-branch-reset: Offer commit at point as history element
- fb1a3c487e [[https://github.com/magit/magit/issues/5051][#5051]] magit-sequencer-abort: Require confirmation
- 4efecc80a6 magit-log-move-to-revision: Default to fixup target if any
- 025c48ed68 magit-section-lineage: Optionally return objects instead of types
- 8a3674b427 completion: Prevent Vertico from sorting completion candidates
- 09961f67a4 [[https://github.com/magit/magit/issues/5097][#5097]] git-commit-turn-on-flyspell: Don't check below cut-line
- 0032ffca8d magit-branch: Add global variable suffixes by default
- 8a3c1ccdda magit-section-cycle: Pivot to tab-next if there is a binding conflict
- 28bcd29db5 [[https://github.com/magit/magit/issues/5107][#5107]] magit--shell-command: Use magit-with-editor
- f49584599c Hide placeholder commands from execute-completing-read
- e37c9ea4de Make discouraged use of git-commit-mode-hook safer and more convenient
- d98e935ed7 [[https://github.com/magit/magit/issues/5134][#5134]] magit-{browse,visit}-thing: Handle raw URL links
- 22fd8f8594 git-commit: Disable auto-filling for summary line
- f3b6864969 magit-insert-heading: Add optional CHILD-COUNT argument
- 6359e5c98f magit-hack-dir-local-variables: New function
- d1e2beb866 magit-file-checkout: Support selecting a directory
- 538cb2f90b [[https://github.com/magit/magit/issues/5176][#5176]] magit-file-section-indent: New variable
- 86509cb09e magit-run-git: Return exit-code
- 1fdb30cc1a [[https://github.com/magit/magit/issues/5188][#5188]] magit-log-select: Place cursor on first non-squash commit
- eb0b81e71d [[https://github.com/magit/magit/issues/5109][#5109]] Remove obsolete advice for Tramp

** Fixes since v3.3.0

- ~magit-status-quick~ wasn't autoloaded.  [[https://github.com/magit/magit/issues/4519][#4519]]

- Magit's version could not be detected if it was installed using Straight.
  [[https://github.com/magit/magit/issues/4526][#4526]]

- Automatic saving of file-visiting buffers was broken inside remote
  repositories that are accessed using Tramp.  [[https://github.com/magit/magit/issues/4292][#4292]]

- Worktree commands and listing worktrees in the status buffer were broken
  inside remote repositories that are accessed using Tramp.  [[https://github.com/magit/magit/issues/4326][#4326]]

- Due to a regression in v3.3.0 setting the mark did not highlight the current
  and only selected section until a second section is selected.  348d9b9861

- A diff header added in a new Git release wasn't handled yet.  [[https://github.com/magit/magit/issues/4531][#4531]]

- Fixed calculation of gravatar image size.  ecfaa325a3

- ~magit-branch-checkout~ refreshed the buffer before all work was done.
  a14f847d97

- Section highlighting was not always updated when it should have, and sometimes
  it was done needlessly.  aba0a59611, 41fcb24761, 10b5407131

- ~magit-dispatch~ contained a binding that conflicted with that of
  ~transient-help~.  f85c4efb52

- ~magit-diff-wash-submodule~ didn't account for empty commit messages.  [[https://github.com/magit/magit/issues/4538][#4538]]

- Empty face definitions weren't defined properly, resulting in "rogue" faces.
  a66b86d511

- ~magit-remote-at-point~ could return invalid values on branch sections.
  2039619696

- Fixed a regression in ~magit-log-maybe-update-blob-buffer~.  [[https://github.com/magit/magit/issues/4552][#4552]]

- The helper function ~magit-current-blame-chunk~ passed the directory visited by
  a Dired buffer to ~git blame~, leading to some commands (e.g., ~magit-checkout~)
  erroring when called from a Dired buffer.  [[https://github.com/magit/magit/issues/4560][#4560]]

- ~magit-convert-filename-for-git~ needed yet another tweak on Windows.  [[https://github.com/magit/magit/issues/4557][#4557]]

- For Helm users, calling ~magit-stash-drop~ on the "Stashes" section has been
  broken since v3.0.0.  [[https://github.com/magit/magit/issues/4571][#4571]]

- ~magit-list-refs~ failed to list a poorly named ~head~ branch.  [[https://github.com/magit/magit/issues/4576][#4576]]

- ~magit-rebase~ offered arguments that aren't supported by the Git version in
  use.  5e70f10566

- ~magit-generate-changelog~ wasn't autoloaded.  [[https://github.com/magit/magit/issues/4581][#4581]]

- Failed to specify ~:test~ when calling ~cl-set-difference~ with strings.
  d899f0e7a6

- ~magit-section-show-child-count~ broke on commits that have no children.  [[https://github.com/magit/magit/issues/4598][#4598]]

- ~magit-fetch-modules~ offered the ~--all~ argument, but that wasn't useful.
  dc11ba7b29

- ~magit-discard~ didn't properly handle conflicts resulting from a file being
  renamed on both sides.  [[https://github.com/magit/magit/issues/4225][#4225]]

- Since v3.0.0, ~magit-pull-from-pushremote~ has failed on non-fast-forward
  merges.  [[https://github.com/magit/magit/issues/4604][#4604]]

- ~magit-insert-revision-message~ got tripped up by messages that begin with a
  commit hash.  [[https://github.com/magit/magit/issues/4602][#4602]]

- ~git-commit.el~ didn't always use ~magit-git-executable~, instead hard coding
  "git", even if Magit is available.  77255776cb

- ~magit-global-core.notesRef~ and ~magit-global-core.displayRef~ didn't actually
  handle global value.  0f96d39834

- ~magit-blame--make-highlight-overlay~ put the highlighting on the wrong line.
  [[https://github.com/magit/magit/issues/4620][#4620]]

- A regression from v3.2.0 broke visiting a file when that file has a mode
  change and point is on the file or the mode change section.  [[https://github.com/magit/magit/issues/4623][#4623]]

- Module sections used the wrong keymap.  94aca04dc8

- In-progress cherry-picks were not always recognized.  [[https://github.com/magit/magit/issues/4646][#4646]]

- Locating remote executables was broken.  4d1d00e6fa

- The use of external diff tools was not prevented everywhere we need the
  ability to feed the output back to ~git apply~.  [[https://github.com/magit/magit/issues/4664][#4664]]

- The revision syntax for matching commit message was not supported.  [[https://github.com/magit/magit/issues/4662][#4662]]

- ~magit-current-blame-chunk~ errored at eob.  437dfe95e9

- ~magit-revision-refresh-buffer~ could set ~magit-buffer-revision-hash~ to
  something that is not a hash.  2676dddb84

- ~magit-tag-release~ failed to create the first release.  ea1d09e0a7

- 84922c3997 magit-show-commit: Fix handling of current buffer's file
- 71f7d1df1d magit-diff-wash-hunk: Handle one line edge case
- 1b0474b590 [[https://github.com/magit/magit/issues/4693][#4693]] Highlight trailing whitespace on lines using dos eol style
- 4b8eab3af1 [[https://github.com/magit/magit/issues/4697][#4697]] magit-{branch-or,}commit-at-point: Only use blame chunk when blaming
- 9b48dd7e36 [[https://github.com/magit/magit/issues/4702][#4702]] Prefer 'git log --no-walk' to 'git show --no-patch'
- 64cca91341 magit-push: Fix magit-push-implicitly--desc
- 5f5e065e1e magit-list-worktrees: Always include path in returned value
- c1def98185 magit--minibuf-default-add-commit: Fix position of commit
- c92dee94e9 magit-save-repository-buffers: Handle let-bound default-directory
- 9a69e3d479 [[https://github.com/magit/magit/issues/4765][#4765]] magit-blame--make-margin-overlays: Fix beginning of each overlay
- 557ab2c062 magit-diff-wash-diff: Fix headers for "git log -L --no-prefix"
- 8158b484ae magit-list-module-paths: Ensure they are relative to top-level
- 87e68e0a8e [[https://github.com/magit/magit/issues/4803][#4803]] magit-tag-release: Fix case when no default is detected
- a3d3758b26 [[https://github.com/magit/magit/issues/4807][#4807]] magit-file-rename: Fix initial-input for destination
- 2a5815fee1 [[https://github.com/magit/magit/issues/4806][#4806]] git-commit-font-lock-keywords-1: Use more restrictive keyword regexp

- Commands that use optional third-party Git extensions didn't consider that
  extension executables may be installed in Git's exec path instead of a
  directory in ~exec-path~.  [[https://github.com/magit/magit/issues/4812][#4812]]

- ~magit-show-commit~ showed the incorrect commit when called on a chunk generated
  by ~magit-blame-reverse~.  [[https://github.com/magit/magit/issues/4834][#4834]]

- 2286a63974 [[https://github.com/magit/magit/issues/3624][#3624]] Fix applying changes over Tramp from Windows
- fa0997797b magit-process-filter: Suppress bogus error when aborting emacsclient
- 76fe394953 magit-log-merged: Fix incorrect calculation of distance from tip
- 6d325d90ba Revert "git-commit-setup: Enable mode after setting local variables"
- 467bb21f7d magit-commit-diff-1: Take --allow-empty into account
- 97a95f7007 [[https://github.com/magit/magit/issues/4883][#4883]] magit-revision-fill-summary-line: Use revision buffer's window width
- 8586e49d81 [[https://github.com/magit/magit/issues/4891][#4891]] magit-auto-revert-mode: Leave disabled in one more case
- 5bd6c15089 magit-save-repository-buffers: Guard against disappeared repository
- dec25b407b [[https://github.com/magit/magit/issues/4898][#4898]] magit-log-set-commit-limit: Modify copy of magit-buffer-log-args
- 1d4bf64f33 [[https://github.com/magit/magit/issues/4903][#4903]] magit-insert-remote-branches: Fix Git 2.40 compatibility
- beb3d6cae2 [[https://github.com/magit/magit/issues/4787][#4787]] magit-wash-bisect-log: Ignore '# status:' lines
- dd649baf7c [[https://github.com/magit/magit/issues/4922][#4922]] diff: Fix visiting removed lines of renamed file
- 3224b1765f [[https://github.com/magit/magit/issues/4744][#4744]] Keep cursor from getting stuck in invisible text
- 9c66514b2c [[https://github.com/magit/magit/issues/4940][#4940]] magit-restore-window-configuration: Select buffer
- 031b9fad42 [[https://github.com/magit/magit/issues/4949][#4949]] magit-display-repository-buffer: Fix doing so
- a003d3c11c [[https://github.com/magit/magit/issues/4954][#4954]] magit-clone-internal: correctly get origin value from args
- 8b3acf7473 [[https://github.com/magit/magit/issues/4962][#4962]] Fix killing process if user input is aborted
- 4ca7b95f28 magit-diff-type: Fix in logs when section isn't provided as argument
- 93d30c5459 [[https://github.com/magit/magit/issues/4976][#4976]] magit-cygwin-mount-points: Don't use cygwin hack remotely
- 027bae37ae [[https://github.com/magit/magit/issues/4988][#4988]] git-commit-setup: Fix auto-mode-alist for remote files
- 889ed3111a [[https://github.com/magit/magit/issues/4977][#4977]] Allow un-/staging binary files when whitespace is being ignored
- 7a1d503470 [[https://github.com/magit/magit/issues/5005][#5005]] git-commit-insert-header: Fix determining location
- 18d1b13675 [[https://github.com/magit/magit/issues/5006][#5006]] magit-process-finish: Avoid unnecessary magit-process-buffer call
- 3329bf0f4f magit-list-refs: Exclude all symbolic references
- 139f603cb8 [[https://github.com/magit/magit/issues/5021][#5021]] magit-hunk-section-map: Honor smerge-command-prefix again
- c6a62accc5 [[https://github.com/magit/magit/issues/5029][#5029]] magit-jump-*-pushremote: Restore functionality

- If applying a patch series with ~git am~ failed, the status buffer incorrectly
  repeated already applied patches in the list of remaining patches.  [[https://github.com/magit/magit/issues/5024][#5024]]

- b187753717 magit-insert-section-body: Ensure parent sections get extended

- ~magit-bisect-run~ is supposed to abort if there are uncommitted
  changes or if the revisions are flipped (like ~magit-bisect-start~
  does), but these checks were unintentionally dropped in Magit
  v3.1.0.  [[https://github.com/magit/magit/issues/5070][#5070]]

- debb9723d9 Support staging hunks over Tramp again
- c3b7fd7dc4 [[https://github.com/magit/magit/issues/5076][#5076]] magit-status-setup-buffer: Ensure correct position when narrowed
- 8fd3cce75c magit-completing-read: Support using function as COLLECTION
- fc485bae0d [[https://github.com/magit/magit/issues/5092][#5092]] magit-insert-remote-branches: Skip HEAD if not symref
- 36be3d66ed [[https://github.com/magit/magit/issues/5102][#5102]] magit-tag-release: Use magit-run-git-with-editor
- 65ecb9c5fc Only hook up git-commit-setup-font-lock-in-buffer once mode is enabled
- 0e8f25a8d8 [[https://github.com/magit/magit/issues/5094][#5094]] elpa/elpa/magit magit--git-wash: Support commands whose non-zero status isn't an error
- faa308fccd [[https://github.com/magit/magit/issues/5122][#5122]] magit-module-confirm: Never require confirmation with prefix argument
- ea02c8e634 magit-log-buffer-file: Support using the region in blobs again
- ea0f07e549 [[https://github.com/magit/magit/issues/5158][#5158]] magit-section--enable-long-lines-shortcuts: Fix warning
- 9d4192b7b1 [[https://github.com/magit/magit/issues/5116][#5116]] Fix visiting file from buffer created with magit-diff-paths
- ad68015aa1 [[https://github.com/magit/magit/issues/5178][#5178]] magit-confirm: Directly support two rounds of prompt formatting
- f31cf79b27 [[https://github.com/magit/magit/issues/5175][#5175]] magit-parse-git-async: Discard stderr for now

* Authors

   899  Jonas Bernoulli
    78  Kyle Meyer
     7  Nacho Barrientos
     5  Basil L. Contovounesios
     4  Andrey Smirnov
     4  Damien Cassou
     4  Park Zhou
     4  Phil Sainty
     4  Stefan Kangas
     3  Daniel Mendler
     2  Aaron L. Zeng
     2  Alex Kreisher
     2  Ben North
     2  Brennan Vincent
     2  Martin Joerg
     2  Nicholas Vollmer
     2  ziggy
     1  Adam Jones
     1  Adam Porter
     1  Allen Li
     1  Andrew Zipperer
     1  Angel de Vicente
     1  Arialdo Martini
     1  Bastian Beranek
     1  Ben Zanin
     1  Brian Leung
     1  Cameron Chaparro
     1  Christian Tietze
     1  Christopher Carlile
     1  Daanturo
     1  Dan Kessler
     1  Daniel Martín
     1  Ellis Kenyo
     1  Eugene Mikhaylov
     1  Eyal Soha
     1  Frédéric Giquel
     1  Greg Steuck
     1  Géza Herman
     1  JD Smith
     1  Jean-Louis Giordano
     1  Jeremy Sowden
     1  Johannes Maier
     1  Jorge Israel Peña
     1  Li Chen
     1  Lin Sun
     1  Lénaïc Huard
     1  Magnar Sveen
     1  Markus Beppler
     1  Matt Beshara
     1  Ola Nilsson
     1  Paul Pogonyshev
     1  Philipp Stephani
     1  Pieter van Oostrum
     1  Pratyush Yadav
     1  Rahul Rameshbabu
     1  Robert Irelan
     1  Roland Marchand
     1  Ron Parker
     1  Sean Allred
     1  Sean Farley
     1  Sean Whitton
     1  Shuguang Sun
     1  StrawberryTea
     1  Ulrich Müller
     1  Vladimir Ivanov
     1  Waqar Hameed
     1  dependabot[bot]
     1  hokomo
     1  shoefone
