# -*- mode: org -*-
* v3.3.0    2021-10-04

Breaking changes:

- The last remaining alphabetic keys (both lower- and uppercase) are
  now bound in ~magit-mode-map~.  ~H~ to ~magit-describe-section~, ~j~ to the
  new ~magit-status-quick~ (or ~magit-status-jump~ in status buffers), ~J~
  to the new ~magit-display-repository-buffer~, ~Q~ to ~magit-git-command~
  and ~Z~ to ~magit-worktree~, and once Forge is loaded, then ~N~ to
  ~forge-dispatch~.  (~Z~ used to be bound to ~magit-stash~, which now is
  only available on ~z~.)  #4259, 9bec1c54a, e401bd4d3

- ~I~ is now bound to ~magit-init~ instead of ~magit-gitignore~, which
  continues to be available on ~i~.  Users of the ~magit-imerge~ package
  (which previously bound ~i~) should consult its library header for a
  suggestion on how to resolve the resulting conflict.  b54b537db

Changes:

- No longer automatically add ~--full-history~ when showing a log for a
  single file that isn't being tracked anymore.  #4381

- ~magit-stash-both~ now asks before discarding merge state.  #4345

- Several infix arguments, which previously could only be disabled
  or have a numeric value, can now also be enabled without having
  an explicit numeric value.  #4379

- Added ~-Xignore-space-change~ and ~-Xignore-all-space~ to ~magit-merge~.
  Like most newly added expert arguments they have to be explicitly
  [[https://docs.magit.vc/transient/Enabling-and-Disabling-Suffixes.html][revealed]].  #4387

- Added new command ~magit-status-quick~, which shows the status buffer
  but avoids refreshing it for performance reasons.  #4259

- Added new commands ~magit-display-repository-buffer~ (bound to ~j~ in
  Magit buffers) and ~magit-switch-to-repository-buffer~ (bound to ~J~)
  and variants for switching to any existing Magit buffer belonging
  to the current repository.  #4259

- Added new command ~magit-dired-am-apply-patches~ for use in Dired.
  #4094.

- Rearranged ~magit-patch~ and added a binding for ~magit-am~.  8ec3a1a21,
  8cadf302b

- Added new command ~magit-help~ (bound to ~h~ in ~magit-dispatch~), which
  simply shows Magit's Info manual.  5bba62629

- When listing entries for Imenu, then remove entry counts from group
  titles for the benefit of third-party packages that need stable
  titles.  #4477

- Include Forge's ~pullreq~ and ~issue~ sections when listing entries for
  Imenu.  f4016f734

- Bound ~imenu~ in the ~magit-status-jump~ prefix.  678df30c3

- Added new transient prefix command ~magit-bundle~, which provides
  support for ~git bundle~.  #4392

- When minibuffer completion allows for a branch or a commit to be
  selected and the former is preferred and thus offered as default
  then, if possible, offer the commit at point as the first choice
  initially accessible with ~next-history-element~.  #4291

- Bound ~magit-refs-set-show-commit-count~ in the ~magit-show-refs~
  prefix.  2fe42f63d

- Added new option ~magit-commit-diff-inhibit-same-window~.  #4132

- Added support for invoking Smerge's "keep" commands when point is on
  a hunk in a Magit buffer.  They can be invoked using the same key
  bindings as in file-visiting buffers or ~RET~, ~u~, ~b~ and ~l~.  #4458

- Added new command ~magit-remote-unshallow~.  #4480

- Added new option ~git-commit-use-local-message-ring~.  #4503

Bugfixes:

- Make ~magit-branch-remote-head~ and ~magit-branch-current~ fall back
  to ~:inverse-video~ when the ~:box~ attribute isn't support, i.e., in
  a terminal.  If this change does not have any effect for you then
  your theme probably changes these faces and should stop doing so.
  #4206

- In some cases refreshing a buffer caused the cursor to jump to a
  different position.  #4148

- ~magit-convert-filename-for-git~ did not expand absolute filenames,
  which is necessary because Git does not understand ~~/~.  de1dc8e74

- ~magit-rebase~ did not enable ~--autostash~ by default but the
  documentation says it does.  421be65a3

- ~magit-clone-read-repository~ did not convert filenames before passing
  them to Git.  4aa7d2928

- Due to a regression in v2.90.0, ~magit-wip-log~ and
  ~magit-wip-log-current~ failed to extract the previous tips of the
  wip refs from the reflog (which is relevant when
  ~~magit-wip-merge-branch~ is nil).  c327824b0

- An old attempt to avoid needlessly updating section highlighting
  did not actually succeed.  #3976

- An error occurred when first showing a status buffer and
  ~which-function-mode~ is enabled because that caused Imenu to collect
  items at a time when that is not possible yet.  #4481

- A change in Git v2.32.0 made it necessary to explicitly filter out
  directories when committing to wip worktree refs.  #4499

- Fixed appearance of Gravatar images by forcing their size instead
  relying the service to return the promised size as advertised.
  8771401d4

- ~git-commit-setup~ enabled the major-mode after setting local
  variables, which caused non-permanent variables to be reset.
  ece2cb84d

* v3.2.1    2021-08-06

This is the first release that is available from NonGNU Elpa.  It is
identical to version 3.2.0 except for dependency metadata, which had
to be changed so that this package could be released on NonGNU Elpa.

Also see https://emacsair.me/2021/08/06/nongnu-elpa
and https://elpa.nongnu.org/nongnu/magit.html.

* v3.2.0    2021-08-01

- The default of ~magit-bury-buffer-function~ was changed to
  ~magit-mode-quit-window~.  #4412

- Added new option ~magit-remote-git-executable~ alongside the existing
  ~magit-git-executable~.  Previously the latter was used for local and
  remote ~git~ processes alike, now the former specifies the executable
  that is used when Tramp is involved.  Using a single variable was
  problematic because we had to use an absolute path on Windows for
  performance reasons but that path was almost certainly wrong when
  using Tramp.  #4447

- We now use an absolute path for ~magit-git-executable~ on macOS as
  well because at least for some macOS users using just the name of
  the executable performs horribly.  #4447

- The section showing openpgp output in the revision buffer is now
  collapsible and starts out collapsed for good signatures or when the
  certificate is missing.  This hopefully makes it more appealing to
  enable ~--show-signature~ (and maybe even encourages some authors to
  start signing commits).  1e08ac6fd

- A mode change or rename can now be applied (un-/staged etc.) without
  also applying edits to the same file and vice-versa.  #4439

- Many commands that act on (or default to) the commit at point now
  pick that up in a few more places; when the string at point is a
  known hash, on a blame chunk, and on a hunk or file inside a log.
  d8d3e4813, 40ad7a25c, 402112c6e

- The default ~magit-pop-revision-stack-format~ now include the
  committer date. 1f85297a3

- The default ~magit-log-revision-headers-format~ now includes notes.
  33bd79fd45

- Added new options ~magit-repolist-sort-key~
  and ~magit-submodule-list-sort-key~.  #4409

- Added new function ~magit-repolist-column-flags~.  35067f512

- Added new option ~magit-ediff-use-indirect-buffers~.  #4395

- Added new function ~magit-process-git~.  fd5cf6173

- Added new function ~magit-git-config-p~.  60f82a323

Bugfixes:

- Some push commands couldn't deal with remote and branch names that
  contain the percent character.  #4428

- ~magit-git-shortlog~ got stuck in the repository in which it was first
  invoked.  384610edb

- ~magit-commit-augment~ did not support ~--allow-empty~.  bbdfd4287

- Squash commands didn't fully take ~--author~ into account.  02d2917c6

- ~magit-completing-read-multiple*~ conflicted with the ~consult~ package.
  #4437

* v3.1.1    2021-07-02

Bugfixes:

- In the normal case ~magit-name-tag~ failed to return the tag.
  14170b4ea

- ~magit-completing-read-multiple*~ tried to use a variable that is
  unbound if ~helm~ isn't loaded.  29b0cb489

* v3.1.0    2021-07-01

Breaking changes:

- The function signature of ~magit-completing-read-multiple~ was not
  compatible with that of ~completing-read-multiple~, so we deprecate
  it.  Use the improved ~magit-completing-read-multiple*~ instead.
  #4420

- The description of ~magit-merge-into~ in the merge menu was changed
  to "dissolve" (from "merge into").  In the future we are going to
  change the key binding from "i" to "d" as well, to keep it mnemonic.
  We don't make both changes at once in the hope that this makes the
  transition easier for existing users.  4c096921f

Changes:

- Adjusted to changes to Eieio in Emacs 28.  a3626277c, 54a0019f3

- Added new command ~magit-log-move-to-revision~.  #4418

- ~A m~ is now also bound to ~magit-merge-squash~.  Despite the name it
  fits better there.  51152fdec

Bugfixes:

- Fixed ~magit-emacs-Q-command~ and ~make build~ for ELPA users.
  f50c3aa56

- Fixed reading choice in ~magit-process-git-credential-manager-core~.
  #4396

- ~magit-blame~ didn't account for quoted file names when parsing
  output from ~git blame~.  #4400

- A regression in v3.0.0 prevented ~magit-bisect-run~ from executing
  ~git bisect run~ unless ~magit-bisect-start~ was called beforehand.
  f592e367d

- ~magit-log-select-quit~ failed to call ~magit-log-select-quit-function~.
  #4423

- The entry for pull-requests in ~magit-list-refs-namespaces~ did not
  match the ref names used by Forge for that purpose.  4c3373f9a

* v3.0.0    2021-05-25

Breaking changes:

- Dropped support for Git v2.0 and v2.1.

- After some users intervened I have decided to NOT drop support for
  Emacs 25 in this release as I had intended to do.  Emacs 25 should
  remain supported for at least a few more releases.

- Magit now uses Transient instead of Magit-Popup.  In the transition
  many popups gained new arguments and/or commands, most of which are
  not mentioned explicitly in these release notes.  Many of these
  commands are hidden by default because they are only useful to a
  subset of users.  See https://emacsair.me/2019/02/14/transient-0.1
  for information about the new Transient library and how to enable
  hidden commands, among other things.

- The commands ~magit-branch-pull-request~, ~magit-checkout-pull-request~
  and ~magit-worktree-checkout-pull-request~ were removed in favor of
  improved implementations provided by the new Forge package.  (See
  https://emacsair.me/2018/12/19/forge-0.1 for more information about
  Forge.)

- ~C-c C-e~ is no longer bound to ~magit-dispatch-popup~.  It is bound to
  ~magit-edit-thing~ now, so that Forge can add section-specific
  bindings using this key.  ~magit-dispatch-popup~ has been renamed to
  ~magit-dispatch~ and continues to be available on ~h~, ~?~ and ~C-c C-c~.
  #3659

- ~C-c C-b~ is no longer bound to ~magit-browse-thing~ to avoid a conflict
  with ~magit-go-backward~ in diff and log buffers.  ~C-c C-w~ (as in web)
  is used instead now.  #3659

- The option ~magit-display-file-buffer-function~ was removed.  8a214c9fb

- The buffer-local variable ~magit-refresh-arguments~ was replaced with
  several variables because ~(nth N magit-refresh-arguments)~ just isn't
  very informative.  Several related API functions had to be changed
  in incompatible ways.  This was done by adding new functions and
  keeping the old variable and functions around for backward
  compatibility.  Packages using the obsolete variable and functions
  should be adjusted soon.  #3836

- Magit-Section is now distributed as a separate package, as announced
  here: https://emacsair.me/2020/01/23/magit-section.  #4003

- Magit now adds three global key bindings, which can be prevented
  by setting the new option ~magit-define-global-key-bindings~ before
  loading ~magit~.  Note that if you bind these keys to other commands
  anywhere in your init file (even *after* loading ~magit~), then Magit
  won't override those bindings.  See the options doc-string for
  more information.  #4237

- Magit no longer depends on ~async-bytecomp~ to avoid a certain class
  of mystery bugs because this effort backfired.  86eec7ba3

- ~global-git-commit-mode~ is no longer autoloaded.  Users who commit
  from the command-line but still want to use ~git-commit-mode~, might
  now have to load ~git-commit~ explicitly in their init file.
  13f20763a

Changes:

- It isn't always obvious that a section can be expanded, especially
  to users who are just getting started with Magit.  Mainly to make
  it easier for those users, expandable and collapsible sections now
  get an indicator in the fringe.

  The new option ~magit-section-visibility-indicator~ can be used to
  disable this or to select the alternative style, which shows an
  ellipsis at the end of the heading of each expandable section
  instead.  #3679

- The "Version" column in ~magit-submodule-list-mode~ and
  ~magit-repolist-mode~ buffers now shows when a repository is dirty.
  0b86dbfd6

- Added new command ~magit-log-merged~.  This command requires
  ~git-when-merged~ (https://github.com/mhagger/git-when-merged).
  It is a suffix of ~magit-log~ but is disabled by default.  #3657

- Added new class slot ~keymap~ to allow other packages to define
  section-specific keymaps without naming them ~magit-TYPE-section-map~,
  which would mean using a symbol prefix (~magit-~) that does not match
  the package name.

- Added new option ~magit-diff-refine-ignore-whitespace~, overriding and
  defaulting to the value of ~smerge-refine-ignore-whitespace~.  #3671

- Added new option ~magit-diff-paint-whitespace-lines~, which controls
  in what kind of lines (added/removed/context) whitespace errors are
  highlighted.  #3671

- It is now possible to show whitespace errors only in uncommitted
  changes by setting ~magit-diff-paint-whitespace~ to ~uncommitted~.  The
  obsolete value ~status~ is treated as a synonym.  The intention always
  was to allow limiting to uncommitted changes and limiting to changes
  shown in the status buffer was the closest approximation readily
  available when this feature was first added.  #3671

- The commands ~magit-commit-instant-fixup~, ~magit-commit-instant-squash~
  and ~magit-rebase-autosquash~ now unconditionally preserve empty
  commits that were already present before the autosquash rebase
  performed by these commands.  This is the safe default; if you want
  to drop such commits, then you have to enable ~--autosquash~ in the
  popup and then invoke ~magit-rebase-interactive~.  #3670

- ~magit-rebase-remove-commit~ now supports removing the ~HEAD~
  commit.  #4195

- The option ~magit-repository-directories~ defaults to ~nil~ again
  because the non-nil default added in v2.90.0 led to surprising
  changes in behavior.  The documentation of this option and the
  related ~magit-status~ command were made less ambiguous.  #3673

- Renamed the face ~git-commit-note~ to ~git-commit-keyword~ because that
  is what text in brackets is called elsewhere in Magit and because
  the term "note" was ambiguous in this context.  The old face name
  is still defined as an alias, but that will be removed eventually.

- The command ~magit-worktree-checkout~ now also offers tags and remote
  branches as completion candidates.  #3692

- The command ~magit-commit-reword~ now always uses ~--allow-empty~
  because when you reword an empty commit, then you have already
  confirmed that you are okay with that commit being empty.

- The new buffer-local variable ~git-commit-need-summary-line~ can
  be of use if you want to write Git notes without separating the
  first line with an empty line from the rest of the text.  #3676

- Made ~magit-tag-release~ more flexible and added it as a suffix of
  ~magit-tag~.  2d14f84b2

- Bound "C-c C-o" (in addition to "C-c C-w") to ~magit-browse-thing~ for
  consistency with ~org-open-at-point~'s binding.  1e1193666

- ~magit-copy-section-value~ now supports stripping diff markers.  #3716

- ~magit-insert-*-branch-header~ now colorizes keywords in the message.
  98e328200

- ~magit-unstage~ can now unstage files that were staged using
  ~--intent-to-add~.  #3753

- ~magit-read-branch-or-commit~ now offers symbolic refnames such as
  ~ORIG_HEAD~ as completion candidates.   #3766

- ~magit-stage-modified~ and ~magit-unstage-all~ now take the log file
  filter into account.  #3767

- New command ~magit-skip-worktree~ can be used to tell Git to pretend
  that the working tree version is up-to-date; ~magit-no-skip-worktree~
  does the opposite.  Both commands are available from the
  ~magit-gitignore~ prefix but are disabled by default.  #3710

- ~--rebase-merges~, an option available in Git version 2.18.0 and
  later, is now supported.  The ~--rebase-merges~ infix of
  ~magit-rebase~ is disabled by default.  #3762

- New command ~git-rebase-break~ inserts a "break" action in the
  rebase to-do sequence (available as of Git v2.20).  #3762

- ~git-rebase-kill-line~ and the commands for changing the action of a
  commit line (e.g., ~git-rebase-squash~) learned to work on all lines
  selected by the region.  #4172

- The ~--color-moved~ diff argument is supported now, but isn't
  available from the diff transients by default.  To enable it
  use "C-x l" in those transients.  #3424

- Added new option ~magit-revision-filter-files-on-follow~ that
  controls whether a revision buffer shown from a log shares the log's
  file restriction despite ~--follow~ being in the log arguments.
  #3680

- ~magit-cherry~ is now available from the ~magit-dispatch~ prefix.
  ef311f378

- ~magit-cherry-spinoff~ now offers the upstream as the default
  starting-point.  e5a2a0ac2

- Added new command ~magit-branch-spinout~.  #3794.

- ~magit-process-password-auth-source~ now allows the use of emails as
  usernames.  05d82d501

- Added new option ~magit-prefer-push-default~, which controls whether
  commands that configure the push-remote do so by setting the value
  of ~remote.pushDefault~ or ~branch.<name>.pushRemote~.  Also removed
  option ~magit-remote-set-if-missing~.  07ca042b6

- Support for bookmarks was rewritten from scratch.  #3836, cd391a035

- The new options ~magit-prefix-use-buffer-arguments~ and
  ~magit-direct-use-buffer-arguments~ replace the old option
  ~magit-use-sticky-arguments~.  The default "stickiness" of arguments
  has changed.  #3836, 0e67ca9eb

- Like when moving through a log, moving through a list of cherries
  now automatically updates the revision or blob buffer.  #3836

- Added new option ~magit-worktree-read-directory-name-function~.  #3820

- Basic optional support for ~libgit2~ was added, but because so few
  functions are currently implemented using that library, opting in
  currently has almost no effect.  #3841

- ~git bisect~ is now run asynchronously.  #3802

- ~magit-bisect~ now supports specifying alternate terms.  The new
  infixes and suffix related to this functionality are disabled by
  default.

- ~magit-branch-or-commit-at-point~ now falls back to an abbreviated
  hash instead of something like "master~2", because the latter often
  leads to undesirable behavior.  fd5eb5b43

- ~magit-toggle-buffer-lock~ is now a suffix of both ~magit-diff~ and
  ~magit-log~.  c09993112

- When invoked with a prefix argument, then ~magit-clone~ now acts as a
  prefix command.  If the new option ~magit-clone-always-transient~ is
  non-nil, then it always acts as a prefix command.  #3846

- Clone commands now accept repository names and similar abbreviations
  in addition to complete urls.  The new options ~magit-clone-name-alist~
  and ~magit-clone-url-format~ control how the translation is done.  #3846

- When called from ~magit-dispatch~, then ~magit-diff~ and ~magit-log~ no
  longer set the file limit to the file visited in the current buffer.
  ccc72469e

- ~RET~ (~magit-diff-visit-file~) on a committed change now always visits
  the respective commit.  Previously it did that for all commits
  except the ~HEAD~ commit.  This made it impossible to visit the ~HEAD~
  commit using this or a related command and also was inconsistent.

  Likewise ~RET~ on an uncommitted removal now visits ~HEAD~, the last
  commit that still had those lines.  Previously it visited the file
  in the working tree, making it difficult to blame the previous
  version of modified lines.

  Now ~C-RET~ (~magit-diff-visit-worktree~) has to be used to visit the
  file in the working tree for any commit or uncommitted removals.
  Setting the new option ~magit-diff-visit-avoid-head-blob~ to a non-nil
  value restores the old behavior of ~magit-diff-visit-file~.  #3848

- ~magit-diff-visit-worktree~ now does a much better job at jumping to
  the correct location in the file.  c9e5425cd

- Added new command ~magit-find-file-other-frame~.  9a69c74ca

- Renamed command ~magit-diff-visit-file-worktree~ to
  ~magit-diff-visit-worktree-file~.  4f739cd35

- Added new commands ~magit-diff-visit-file-other-frame~,
  ~magit-diff-visit-worktree-file-other-window~, and
  ~magit-diff-visit-worktree-file-other-frame~.  756d61911, 6704b3248

- Added new option ~magit-process-prompt-functions~.  #3845

- ~magit-find-file~ is now available from ~magit-file-dispatch~.
  9c587d458

- ~magit-find-file~ and related commands learned to visit a file from
  the worktree or index.  #3860

- ~magit-find-file~ and related commands learned to go to the position
  in the visited file that corresponds to the position in the
  previously current buffer.  #3860

- ~magit-diff-buffer-file~ learned to visit a commit instead of a range
  when appropriate.  #3860

- ~magit-show-commit~ and ~magit-diff-buffer-file~ learned to go to the
  position in the diff that corresponds to the position in the
  previously current file-visiting buffer.  #3860

- Added new command ~magit-blob-visit-file~.  When visiting a blob, then
  it goes to the same location in the respective file in the working
  tree.  #3860

- ~magit-add-change-log-entry{,-other-window}~ learned to extract the
  file name from blob-visiting buffers.

- ~magit-tag-release~ now runs ~git~ asynchronously.  #3855

- When invoked with two prefix arguments, then ~magit-mode-burry-buffer~
  now also kills all other Magit buffers associated with the current
  repository.  #3863

- ~magit-branch-or-commit-at-point~ was taught about Forge pull-requests.
  9447edd12

- When merging a branch that corresponds to a Forge pull-request, then
  the commit message is modified to contain the pull-request number.
  15331d7c0

- For consistency ~magit-file-rename~ now also renames buffers that
  visit untracked files.  #3916

- Additional history simplification arguments were added to the log
  transients.  Because only a minority of users will use those, they
  were put on levels that are not shown by default.  8f8a2f1cf

- Added new commands ~magit-assume-unchanged, ~magit-no-assume-unchanged~,
  ~magit-jump-to-skip-worktree~ and ~magit-jump-to-assume-unchanged~, and
  section inserter ~magit-insert-assume-unchanged-files~.  2d0de8614 ff

- Magit buffers are now compatible with ~whitespace-mode~ (and other
  modes which use font-lock).  #3840

- Added new command ~magit-status-here~ available from file-visiting
  buffers at ~C-c M-g g~.  This command tries to go to the position in
  the status buffer that corresponds to the position in the current
  file-visiting buffer.  Setting ~magit-status-goto-file-position~ to
  a non-nil value causes ~magit-status~ to behave the same way.  #3930

- Replaced ~magit-repolist-column-dirty~ with ~magit-repolist-column-flag~
  which allows specifying arbitrary flags and predicates in custom order
  using ~magit-repolist-column-flag-alist~.  #3936 #3937

- The buffer that shows a stash is now updated automatically when
  moving through a list of stashes if the user added the new
  ~magit-status-maybe-update-stash-buffer~ and/or
  ~magit-stashes-maybe-update-stash-buffer~ to
  ~magit-section-movement-hook~.  #3943

- Added new commands ~magit-log-matching-branches~ and
  ~magit-log-matching-tags~.  #3958, #3983

- Added new option ~magit-disable-line-numbers~.  #3971

- Added new option ~magit-log-margin-show-committer-date~.  1b9995238

- Added new command ~magit-worktree-move~ to allow you to move an
  existing worktree to a new directory.  #3978

- Introduced two new faces to customize the appearance of commit messages:
  ~magit-diff-revision-summary~ and ~magit-diff-revision-summary-highlight~.
  #3988

- Commands under the ~magit-gitignore~ prefix now include directories
  that contain only untracked files as completion candidates.  #3985

- Added new command ~magit-toggle-verbose-refresh~.  c63ec3920

- Added new function ~magit-disable-section-inserter~, which can be used
  to disable a section only in the current repository.  This mechanism
  is useful for exceptionally large repositories.  #4017

- Added new transient prefix command ~magit-status-jump~ and turned the
  existing jumper commands into suffixes.  655950f40

- Added new option ~magit-copy-revision-abbreviated~.  #4014

- Added new transient prefix command ~git-commit-insert-pseudo-header~
  and turned the existing inserter commands into suffixes.  e88242679

- Added new command ~magit-push-notes-ref~.  dff0bca6f

- The ~--irreversible-delete~ diff argument is supported now, but isn't
  available from the diff transients by default.  To enable it use
  "C-x l" in those transients.  #4056

- Added new command ~magit-reset-keep~.  0ea8b0ef6

- Added new option ~magit-reshelve-since-committer-only~.  #4101

- Added new command ~magit-commit-absorb~ as an alternative to
  ~magit-commit-autofixup~.  9423edc0b

- Added new option ~magit-status-use-buffer-arguments~.  #4046

- Added new command ~magit-project-status~.  #4173

- Added new variable ~magit-process-extreme-logging~ for debugging
  purposes.  #4217

- Taught Isearch and Swiper how to expand Magit sections when the
  current match is inside a hidden section and how to close sections
  again.  #3999

- Added new command ~magit-commit-absorb-modules~.  10b4bec53

- Added new transient command ~magit-shortlog~.  #4262

- Added new command ~magit-generate-changelog~.  c5e118111

- The name of the main branch is no longer hard-coded to "master".
  Now we use the value of ~init.defaultBranch~ if that is set and the
  named branch exists.  If not, then some other names that are
  commonly used for the main branch are tried as a potential fallback.
  c4494ac0b

- Added new option ~magit-diff-extra-stat-arguments~.  1bd4fe26e

- Added support for ~git-credential-manager-core~.  #4318

- The name of the upstream remote is no longer hard-code to "origin".
  See the doc-string of function ~magit-primary-remote~ to learn how to
  customize this.  f883b62fe

Bugfixes:

- Bumped the minimal required version of ~git-commit~ to the correct
  version.  e9bd33758

- Dropped the new "v" prefix that we started to add to release tags
  starting with the previous release in places where that prefix is
  undesirable.  f441cf6d7

- Staging and unstaging submodules while ~diff.submodule~'s value is ~log~
  broke shortly before the v2.90.0 release.  #3654

- When another window is already displaying the file buffer, then
  ~magit-display-file-buffer-other-window~ did additionally display
  it in the current window.  #3662

- It was undefined whether highlighting of word-granularity
  differences or of whitespace-error had higher priority.  #3671

- The Custom type definition of ~magit-diff-adjust-tab-width~ was
  broken.  #3671

- In the log-select buffers point was no longer placed on the same
  commit as was at point in the buffer from which the command was
  invoked.  #3674

- ~magit-diff-type~ falsely concluded that a diff buffer showed
  unstaged changes when diffing a range where the right side resolves
  to the same commit as ~HEAD~.  #3666

- ~magit-log-trace-definition-function~ defaulted to ~which-function~,
  which isn't reliable because it used Imenu, which uses a cache but
  by default never invalidates.  Now we use ~magit-which-function~, a
  replacement that never uses an outdated cache.

- ~magit-log-trace-definition~ didn't account for Git treating "-"
  differently from, e.g., "_", leading to false-positives like
  "foo-suffix" being considered a match for "foo".

- ~magit-log-trace-definition~ didn't do the escaping that Git expects
  for function names with colons.  #4051

- A regression in ~magit-log-move-to-parent~ prevented it from doing its
  job.  #3682

- Since v2.11.0 ~magit-log-revision-headers-format~ lines in the log
  output (shown via ~++header~) weren't displayed properly when
  ~--graph~ was enabled.  #4129

- ~magit-clone~ didn't run ~magit-credential-hook~.  #3683

- ~magit-list-repositories~ failed if one of the repositories that it
  tries to list is empty.  #3686

- The summary element from ~git-commit-font-lock-keyword-1~ lost against
  the elements of ~git-commit-elisp-text-mode-keywords~, causing the
  summary line to lose its special appearance when a "string" or
  `symbol' appears in it.

- ~magit-split-branch-name~ did not take into account that remote names
  can contain slashes.  #3685

- ~magit-which-function~ now simply resets Imenu's cache and then calls
  ~which-function~.  The old approach that tried to outsmart Imenu was
  broken.  #3691

- ~magit-describe-section-briefly~ did not actually display a section
  ident when called interactively, as the docstring claimed.  Now it
  displays the section ident, which is useful in
  ~magit-status-initial-section~.

- Section movement commands got confused by type change sections being
  treated as a special kind of hunk.  #3698

- ~x-strech-cursor~ was set globally.  #3707

- ~magit-blame-echo~ was broken.  #3720

- ~magit-rev-name~ sometimes returned ~nil~ even when it could return a
  name and it returned, e.g., "origin/HEAD" instead of "origin/master".
  2042957a7, d500c442

- ~magit-insert-*-branch-header~ did not account for empty commit
  messages.  #3719

- ~magit--painted-branch-at-point~ failed in some cases, causing an
  error.  e7e612e3c

- In newer Git versions the rebase list shown in the status buffer
  could contain duplicated entries for the current commit.  1e1cd0e28

- When deleting a remote branch failed, the logic for deciding whether
  to prune the local remote-tracking ref was too loose, leading to
  false positives.  #3650

- ~magit-ediff-stage~ offered untracked files as completion candidates
  even though it cannot handle those.  8dd612dfb

- Fix handling of passphrase prompts which are output with leading
  carriage return, such as those produced by Openssh 8.0.  #3843

- The default value for ~magit-view-git-manual-method~ was treated as
  invalid.  #3873

- Unlike other ~magit-*-files~ functions, ~magit-ignored-files~ returned
  paths relative to the current directory instead of the top-level of
  the repository.  6d3f12d58

- Staging a hunk applied the change to the wrong location in rare
  cases where repetitive diff context prevented ~git apply~ from
  finding the correct location.  #3924

- Staging a hunk with no context now aborts, as staging a region
  within such a hunk already did, to avoid unintended and confusing
  results.  #3924

- Adjusted many faces so that they continue to extend to the edge of
  the window as intended.  This was made necessary by a backward
  incompatible change in Emacs 27.  #3986

- The ability to stage regions from within intent-to-add files broke
  for users running Git v2.19.0 or later due to a change in the
  default display of these files in the diff output.  #4026

- ~magit-stash-branch-here~ applied the stash without checking out the
  new branch.  d3cee7f8c

- A regression in v2.90.0 led to ~magit-wip-mode~ committing to "<wip
  prefix>/refs/heads/HEAD" rather than "<wip prefix>/HEAD" when on a
  detached head.

- Modifying a file, marking it with a "skip-worktree" or "assume
  unchanged" bit, and then modifying it again triggered a failure in
  ~magit-wip-commit-worktree~.  #4037

- ~magit-abbrev-length~ returned an incorrect result when
  ~core.abbrev~ was explicitly set to "auto".

- Calling ~magit-status~ in a repository with a corrupt Git
  configuration didn't propagate the error and instead preseted the
  directory as though it was uninitialized.  #4337

- When the status buffer is not shown in any buffer but point is on
  a hunk, and editing and saving the respective file causes, that
  hunk to disappear or change,  then Magit ended up changing point
  in the file-visiting buffer.  #4196

- Various bug fixes to
  ~magit-branch-delete~ (3e73ff19d),
  ~magit--{upstream,pushbranch}-suffix-predicate~ (0ce7fbbc2),
  ~magit-patch-create~ (470272a0f),
  ~magit--cherry-spinoff-read-args~ (add276810),
  ~magit-refs--insert-cherry-commits~ (3b37e6dc1),
  ~magit--{pushbranch,upstream}-suffix-predicate~ (cef3b1217),
  ~magit-diff-insert-file-section~ (01cf0c165),
  ~magit-insert-unpushed-to-upstream-or-recent~ (02445d6e3),
  ~magit-ref-equal~ (46862d9d2),
  ~magit-ref-fullname~ (66b85daea),
  ~magit-insert-unpulled-from-upstream~ (0363e9bac),
  ~magit-git-version~ (0abc761f5),
  ~auto-revert-buffers--buffer-list-filter~ (713bd64bf),
  ~magit-insert-revision-gravatar~ (1f7e84c26),
  ~magit-process-unset-mode-line~ (457a685e5),
  ~magit-ido-completing-read~ (f52ab7977),
  ~magit-file-untrack~ (0984d77fb),
  ~magit-ref-p~ (8b33bc7c7),
  ~git-commit-setup~ (675b75ded),
  ~magit-{,no-}skip-worktree~ (34d6ac27d),
  ~magit-fetch-all~ (904bb82ca),
  ~magit-branch-configure~ (7246bf291),
  ~magit--maybe-update-blob-buffer~ (1d57893a6),
  ~magit-...-maybe-update-...-buffer~ (8d3459b55),
  ~magit-read-gpg-secret-key~ (9d68a455d),
  ~magit-gitignore-in-subdir~ (8c4e8ed74),
  ~magit-save-repository-buffers~ (82136796f),
  ~magit-stash-drop~ (a4972766a),
  ~magit-ignore-submodules-p~ (a7699f868),
  ~magit-log-propertize-keywords~ (ac1ee3df5),
  and then I stopped adding to this list.
