# -*- mode: org -*-
* v4.6.0    UNRELEASED

The primary focus of this release are blob-visiting buffers.  For
now the hope is that most users will find working with such buffers
slightly more pleasant, without necessarily becoming aware that
anything changed.  The goal was to pay off technical debt and to
prepare for future changes.

- Visiting blobs now always involves ~magit-find-file-noselect~, even
  when an existing buffer may be involved.  The behavior of this
  function is getting closer to that of ~find-file-noselect~.

- Implemented support for visiting blobs for the benefit of features
  such as syntax-highlighting, as opposed to the user visiting it
  explicitly.  Such "volatile" blob buffers are hidden and are cached
  for a while, in case they are needed again.  If the user visits a
  hidden cached blob, the buffer is renamed to reveal it and it is no
  longer subject to garbage collection.

- Blobs can now alternatively be visited with nothing but a blob
  object id (instead of a revision and a path).

- Blob-visiting buffers can now be reverted with ~g~, which is useful
  when the buffer is visited via, e.g., a branch, as opposed to a
  revision or blob object id.  The buffer is not needlessly refreshed,
  if the blob oid does not change.  dd48491659, f55bfaf792, cf84935a74

- Syntax highlighting can now be enabled for diffs.  This is disabled
  by default, because the work is still being performed synchronously,
  which leads to noticeable delays for large diffs and can be sluggish
  even for smaller diffs.  #2942, c7b0342dc7

  A future release is going to add support for asynchronous diff
  syntax highlighting.  (The blob buffer cache added in this release
  does help, but is not enough.)

  Configure ~magit-diff-fontify-hunk~ to try out this feature now, but
  please just disable it again, if it turns out to still be too slow
  for your taste.  If you enable this, you should also customize the
  new option ~magit-diff-specify-hunk-foreground~ and possibly the new
  option ~magit-diff-use-indicator-faces~ as well.

- Added new hook ~magit-find-blob-hook~, which replaces the old hooks
  ~magit-find-file-hook~ and ~magit-find-index-hook~.  The new hook is
  run when first visiting a blob as the old hooks used to do, but
  also when reverting a blob buffer.  fc29202838, 999047889c

- ~magit-find-file-noselect~ now pivots to the worktree file when
  asked to visit the index blob, but that has multiple stages,
  due to an unresolved conflict.  This likely will be revisited.
  a2165a0ba7

- Added support for compiling a list of definitions that are modified
  in a diff, and for inserting such lists when authoring commit
  messages.  The new commands ~git-commit-insert-changelog-gnu~ and
  ~git-commit-insert-changelog-plain~ insert such list and can be
  invoked from the same menu (on ~C-c C-i~), which is used to insert
  commit trailers. #2931, 863f1aa6fe, 46b7f76df3

- Improved support for jumping to the same location in another blob,
  from a buffer visiting a blob or file.  87090491d4

- Reworked ~magit-buffer-*~ variables.  Many were renamed (but the old
  names are still available as obsolete aliases).  Others that were
  previously shared by multiple modes were replaced with mode-specific
  variants.  298218fa85~..7bfc458065

- When authoring commit messages, ~complete-symbol~ now completes
  against modified definitions and symbols appearing in modified
  lines.  2366db4b3b

- Thanks to the improvements to ~magit-find-file-noselect~ and the blob
  buffer cache, Ediff support could be simplified considerably.

- If it is part of an Ediff session, quitting a blob-visiting buffer
  would corrupt that session, so teach ~magit-bury-or-kill-buffer~ and
  ~magit-bury-buffer~ to instead offer to completely quit the session.
  29c6241993

- Commands that currently cannot be used are now explicitly disabled
  in the ediff menu.  3125b51ede

- Provided ~magit-delete-by-moving-to-trash~ is ~nil~,
  ~magit-worktree-delete~ is faster now.  #5504

- Taught ~magit-insert-worktrees~ to emphasize the current worktree
  even if no branch is checked out.  fbc4b5d316

- ~magit-git-string~ now returns ~nil~ if the exit status is non-zero.
  Previously it tended to return the empty string instead, making
  it harder for callers to detect and handle errors.  c85358f5b0

- When listing repositories ~uniquify-separator~ is now respected.
  #5514

- ~magit-diff-toggle-refine-hunk~ now favors immediate refinement mode
  over the incremental variant.  550ec1cb1f

- Added new command ~magit-remote.<remote>.followremotehead~.  #5283

- Improved gitignore commands and menu.  1c0efafc4b~..28878dd879

- Added new option ~magit-branch-name-suggestions~.

Bugfixes:

- Deleting all stashes proceeded without requiring confirmation.
  #5500

- When the status buffer is refreshed in the background, point was
  reset to its beginning.  9d7e06dd8c

- ~magit-find-file-noselect~ assumed the file is located in the current
  repository.  c7b70171ba

- ~magit-worktree-delete~ did not ask for confirmation if there are
  untracked files, which would be lost.  7887f80213

- ~magit-wip-mode~ was added to ~git-commit-post-finish-hook~, even if
  it ended up as a no-op, which could result in a timeout warning,
  which in this case would be meaningless.  24e97fcdfe

- ~make clean~ failed to remove ~magit-autoloads.el~.  dd6363369f

- ~make emacs-Q~ was broken.  #5517

- Before the initial commit, use of ~magit-wip-mode~ could result in
  bogus errors.  8783759256

- Amending the initial commit resulted in an error.  #5524

- Errors that occur while preparing a commit diff are now demoted
  or suppressed, allowing the commit process to proceed.
  90561a2e85, #5526

- Merge commands can now create octopus merges.  #5523

- Commands that usually cycle through values displayed in the
  transient menu can also use completion to set the new value
  (by using a prefix argument).  The completion candidates
  displayed in that case have been improved.  60e04662be, 7ecc3d3890

- It wasn't possible to reverse the sole hunk adding a file.  #5521

- The value displayed for transient suffixes that represent Git
  variables could be wrong if the global value is used as fallback.
  8d891f7c41

- The value displayed for transient suffixes that represent boolean
  Git variables was wrong if the variable is unset.  aa625ec04c

- A new feature in Emacs 31 caused a misleading hint to be added to
  the prompt used when reading a range.  f44c6424ce

- A remote branch could not be deleted if a tag with a matching name
  exists.  #5368

- If ~magit-git-debug~ is enabled and an error occurs,
  ~magit--git-insert~, and thus ~magit-git-insert~, always returned the
  error message, which most callers were not prepared to handle,
  making debugging harder, not easier.  Now these functions return
  ~nil~, like when debugging is disable.  71047f4d45

- A secondary Git index is used when creating wip commit, but despite
  that, if the primary index is locked that fail.  The primary index
  can be locked at surprising times (e.g., while the user is writing
  a commit message).  If the creation of a wip commit results in an
  error, that previously was not demoted, preventing explicit user
  actions from completing.  315d85c765

- On Windows compiling Magit failed if Git isn't installed.  #5548

- Added a kludge to make it possible to read a module using Helm.
  #5546

- ~magit-list-files~ and other functions that list files no longer
  limit to files in ~default-directory~.  All callers needed that,
  but had to switch to the top-level before calling such functions,
  and some callers failed to do so.  c29f7eb3e4

- ~magit-untracked-files~ used ~git ls-files~, which is unreliable when
  it comes to this particular file set, instead of the reliable ~git
  status --porcelain~.  073b01e834

- Before v2.54 ~git log~ ignored ~--no-prefix~ when used together with ~-L~.
  Drop our workaround, for releases that don't need it, where it would
  backfire.

* v4.5.0    2026-01-01

- Removed support for loading Magit extensions from ".git/config".
  Please [[https://github.com/magit/magit/commit/d662ec107e74a05a0348ca75c89ebd127d658656][use ~.dir-locals.el~ instead]].  d662ec107e

- Reworked how the global ~magit-auto-revert-mode~ is, or is not,
  enabled at startup.  Enabling ~global-auto-revert-mode~ now disables
  this mode.  38a916f555..de766d2968 et al.

- Simplified ~magit-wip-mode~.  This involves removing all other wip
  modes (which allowed using only a subset of the protection offered
  by ~magit-wip-mode~) and using the new ~magit-before-change-functions~
  and ~magit-after-apply-functions~ hooks.  98ef107037..fa629ad5b5

- Added experimental support for calling Lisp hooks from Git hooks,
  and added a few such hooks: ~magit-common-git-post-commit-functions~,
  ~magit-git-post-commit-functions~, ~magit-git-post-merge-functions~
  and ~magit-git-post-rewrite-functions~.

- Replaced option ~magit-section-visibility-indicator~ (singular) with
  new option ~magit-section-visibility-indicators~ (plurarl) to better
  support emacs sessions that have both terminal and gui frames.
  2d8f43e681

- ~mouse-set-point~ is now remapped to Magit's variant.  fa5906621a

- ~magit-autoloads~ is now loaded exactly once.  3d1a008f18

- Fixed custom type of ~magit-blame-styles~.  84c5c8c8c6

- Fixes regression in ~magit-rebase-autosquash~.  It no longer excluded
  the merge-base.  54e460a701

- A few hook functions were not autoloaded.  #5464

- Some refinements were calculated for the diff in the commit
  message buffer, despite not actually being displayed.  #5483

- Commands for showing logs for wip branches were no longer displayed
  in the log menu, despite ~magit-wip-mode~ being enabled.  #5488

- Added new option ~magit-wip-debug~.  655bc502a3

- Various build improvements.

* v4.4.2    2025-10-06

- Addressed harmless compiler warning.

* v4.4.1    2025-10-06

- Added new option ~magit-log-trailer-labels~.  #5432

- Added new command ~magit-delete-shelved-branch~.  31c0ae17d3

- Added new variable ~magit-save-repository-buffers-predicate~.  #5450

- Fixed saving the value of the menus ~magit-diff~, ~magit-log~,
  ~magit-diff-refresh~ and ~magit-log-refresh~.  c7ba53b4b4

- A form from the ~cond-let~ library made it into the autoloads file,
  where that library isn't being loaded.  #5451

- ~magit-revert-rev-file-buffer~ did not respect a value of ~nil~ for
  ~enable-local-variables~.  5eb31a419a

- Improved commands for jumping to specific sections in revision
  buffers.  #5442

- Improved consistency of scroll command bindings.  #5453

- It is possible again to exit ~magit-completing-read-multiple~ with
  no input if REQUIRE-MATCH is ~t~.  b5066e5fa4

- Diffs that appear in logs could not be parsed in some edge cases.
  #5454

* v4.4.0    2025-09-09

- At least Emacs 28.1 is required now.  Emacs 30.1 was released
  earlier this year, so Emacs "oldoldstable" is still supported.

- Code for tracking a position within a file across versions and
  diffs, and the commands that build on that to allow jumping to
  the same location in another version or diff, are undergoing
  heavy refactoring and improvements.  This is paying off technical
  dept and prepares for upcoming user-level improvements as well
  as for new features.  Some changes in behavior already appear in
  this release, as described below.

- For staged and unstaged changes, ~magit-diff-visit-file~ (~RET~) now
  always visits the blob actually corresponding to the line at point,
  as it already did for committed changes.  Previously it failed to
  visit the index blob from an unstaged removed line when that file
  has staged changes; and it failed to visit the index blob from a
  staged added line.

  Visiting the file in the worktree is very useful, but, instead of
  ~RET~, I recommend using ~C-<return>~ (~magit-diff-visit-worktree-file~).
  The new option ~magit-diff-visit-prefer-worktree~ allows restoring
  the old behavior.  See [[https://docs.magit.vc/magit/Visiting-Files-and-Blobs-from-a-Diff.html][Visiting Files and Blobs from a Diff]].

- "Blob navigation" is now aware of index blobs.  It is possible to
  navigate between such blobs, and the HEAD blob or the file on disk,
  using the same key bindings used to time travel from one committed
  blob to another.  See [[https://docs.magit.vc/magit/Minor-Mode-for-Buffers-Visiting-Blobs.html][Minor Mode for Buffers Visiting Blobs]] and
  [[https://docs.magit.vc/magit/Commands-for-Buffers-Visiting-Files.html][Commands for Buffers Visiting Files]].

- When quitting a blob-visiting buffer with ~q~, it is no longer
  killed, iff it is being displayed in an additional window.  The
  behavior can be changed by binding ~q~ in ~magit-blob-mode-map~ to
  one of the commands ~magit-bury-or-kill-buffer~, ~magit-bury-buffer~,
  or ~magit-kill-this-buffer~.  The former two are new commands.
  731642756f

- ~magit-status-here~ now places the cursor within the diff of unstaged
  changes, if the current line in a file-visiting buffer has unstaged
  changes.  If it does not, then it falls back to going to the
  corresponding staged change.  #4814

- Even though ~auto-revert-mode~ is enabled, if that has not yet kicked
  in and the user visits a file that needs reverting, they used to be
  asked to confirm the revert.  efaf91d8af

- ~magit-completing-read~ and ~magit-completing-read-multiple~ can now
  require non-empty input.  If REQUIRE-MATCH is ~any~, then the user
  can exit with input that does not appear in the collection, but
  is not allowed to exit with zero input.  #5422

- ~magit-completing-read-multiple~ now adds the default choice to the
  set of valid choices.  7167f70665

- ~magit-read-branch-or-commit~ can now exclude more than one possible
  choice from the set of valid choices.  10c366ed52

- Improved minibuffer input for worktree commands, including adding
  new option ~magit-read-worktree-directory-function~.

- Section visibility indicators can now be displayed in the left
  margin.  #5424

- References in the ~refs/pullreqs~ namespace are no longer offered
  as completion candidates.  87ddd8f7c4

- Improved font-lock in ~git-rebase-mode~.  3857b8bce9..9654f5e094

- Added new face ~magit-diff-conflict-heading-highlight~.  2e76ec9337

- Added new command ~magit-revision-jump~, a menu for use in
  ~magit-revision-mode~, bound to ~j~.  acf71f7eb4

- ~magit-dired-jump~ now supports ~magit-repolist-mode~.  8c4a903886

- Fixed a regression ~magit--refresh-buffer-set-positions~, added in
  v4.3.7, which messed up the window-start.  406a3094a8

- ~magit-setup-buffer~ and ~magit-refresh-buffer~ take two new keyword
  arguments INITIAL-SECTION and SELECT-SECTION.  Two arguments of
  ~magit-setup-buffer-internal~ are now keyword arguments.
  ced0984540, c4def6d99a

- All text inserted into Magit buffers that previously used ~face~
  now use ~font-lock-face~ and ~magit-section-mode~ can therefore set
  ~font-lock-defaults~.  Previously if some third-party packages used
  ~font-lock-add-keywords~, some of Magit's own fontification would
  be lost.  Third-party packages that use ~magit-section-mode~, might
  need to be adjusted accordingly.  7de0f1335f,  b4768acb1f

- Daring to use my new Cond-Let package and other shorthands.
  08dafc1732..1c48327a06, b377adb68c

* v4.3.8    2025-07-05

Bugfixes:

- In v4.3.7 we started to restore the display-start positions of the
  windows displaying a buffer that is being refreshed, but in log
  buffers that is undesirable.  After creating a new commit we want
  that to immediately be displayed at the top of windows displaying
  log buffers.  #5403

- Refreshing was skipped after discarding all untracked files.

- When sub-directories contain ".gitignore" files, then invoking
  ~magit-discard~ on the "Untracked files" section did not necessarily
  remove the same set of files as listed in that section.  (At least
  it did show the files, which would be removed, in the confirmation
  prompt.)  #5405

* v4.3.7    2025-07-01

- Refreshing a buffer causes its content to be recreated, which can
  result in scrolling.  Now we attempt to restore the display-start
  positions of the windows displaying the buffer.  #5403

- When running ~git~ for side-effects and that signals an error, we
  did not augment the error message to inform the user that the full
  output can be found in the process buffer.  When the error is not
  signaled, we did already append that hint to the message.  Also
  added a new option, ~magit-show-process-buffer-hint~, for people who
  are already aware of the process buffer and would like to avoid
  the noisy reminder.  #5396

Bugfixes:

- Some instructions inserted into rebase sequence buffers were not
  prefixed with ~comment-start~, instead # was used unconditionally.
  #5388

- Fixed a regression in v4.3.6, which caused a conflict between the
  overlays used for section highlighting and section selection, if
  both of these faces relied on the same face property (likely the
  foreground color).  #5389

- Hunks could remain painted as selected when navigating away.  #5393

- The log arguments "--grep" and "--graph" are no longer mutually
  exclusive, but we still dropped the latter when the former was
  used. #5391

- ~magit-save-repository-buffers~ errored on older Emacs releases,
  if the value of the variable by the same name is ~ask~.  #5399

- ~magit-after-save-refresh-status~ did not honor ~magit-inhibit-refresh~.
  d9d2f6c312

* v4.3.6    2025-06-01

- Generalized and heavily refactored the code, previously used only to
  highlight diff-related sections and to paint hunks, so that it can
  be used for other sections as well.  The new implementation should
  also be a bit faster.  cfe4faaaf6^..c556fee1bd

- A single-section selection now requires a non-empty region.
  6c4c16942a

- When creating a stash, "On <branch>: " is now offered as a second
  future history element.  75c6191999, 9b81df36b4

- Added new commands ~git-rebase-drop~, ~git-rebase-alter~ and
  ~git-rebase-squish~.  479c467080, 9674c4755a

Bugfixes:

- Fixed issues concerning date handling in log margins.  #5373

- The list of rebase actions in the status buffer could contain
  invalid elements derived from comments in Git's list of such
  actions.  91806dc729

- Applying the region used to fail, if some part of the same hunk but
  outside the region has conflicts, even if the part in the region did
  not.  9e551d9eb7

* v4.3.5    2025-05-14

Bugfixes:

- Fixed a v4.3.3 regression in inserting rebase actions into the
  status buffer when stopping at the last commit.  #5365

* v4.3.4    2025-05-13

- Arguments, that are normally set by cycling through the possible
  values displayed in the menu, can now also be set using completion,
  by using a prefix argument.  #5362

Bugfixes:

- Matching references were no longer displayed on the first line of
  revision buffers.  48b158500d

- Fixed a v4.3.3 regression in inserting rebase actions into the
  status buffer when ~--rebase-merges~ is specified.  #5365

- On the "Untracked files" section, ~k~ no longer worked as intended.
  #5366

Also contains code and documentation cleanups and improvements.

* v4.3.3    2025-05-01

- ~magit-section-show-level~ now acts on all selected sections.  #5354

- Inserting the list of commits being rebased into the status buffer
  is now much faster.  8e72767262

- All rebase actions are now inserted into the status buffer.
  69b310e109

- While editing the list of commits and actions to be rebased
  ~git-rebase-kill-line~ (~k~) on a commented line now uncomments it.
  ff44ee1bc3

- Added new variants of commands that deal with files for use in Dired
  buffers, and improved existing variants.  In Dired, these commands
  are available from ~magit-file-dispatch~ (~C-c M-g~).  542c2f8a75 et al.

- ~magit-branch-shelve~ now prepends the date to the refname, and
  ~magit-branch-unshelve~ removes such prefixes.  78ffd1a389

- The new function ~magit-insert-shelved-branch~ can be added to
  ~magit-refs-sections-hook~ to list shelved branches.  d6b7784547

- Added new command ~magit-wip-purge~, which removes old branches
  created by ~magit-wip-mode~.  d5e0f3a639
  
- ~magit-blame-styles~ now supports inserting truncated commit hashes.
  #4057

- Added new command ~magit-mouse-set-point~.  3c9e519197

Also contains code and documentation cleanups and improvements.

* v4.3.2    2025-04-01

- Removed legacy options ~magit-wip-*-mode-lighter~.  225ea6fd00

- ~magit-log-current~ now falls back to displaying the log for ~HEAD~ if
  no branch is checked out, and the now redundant ~magit-log-head~ is
  no longer displayed in the ~magit-log~ menu by default.  c8b1e12bd5

- Renamed ~magit-merge-into~ to ~magit-merge-dissolve~ and changed the
  key binding in the ~magit-merge~ menu from ~i~ to ~d~.  The description
  in that menu already was "dissolve".  Do this to make it more
  obvious that this command deletes the source branch after it has
  been merged into the target branch.  #4386

- Added new option ~magit-process-apply-ansi-colors~ (but discourage
  its use).  #5348

- Support for Ido has been moved out into a new package ~magit-ido~.
  6aec967ee4

Bugfixes:

- ~magit-after-save-refresh-buffers~ did not respect
  ~magit-inhibit-refresh~.  c0a8e694b9

- When washing of a section was delayed and it ends in an empty line,
  that line was not always made part of the section.  f6f25e6566

- In some cases section specific key bindings were not made available
  as intended.  6ce1ece580, 3f79700f1b

- In some cases ~magit-toggle-buffer-lock~ has to uniquify buffer names
  but failed to do so.  #5330

- After applying a hunk, the buffer was refreshed twice.  #5343

- The diff shown by ~magit-diff-paths~ was not washed. #5093

Also contains more code and documentation cleanups and improvements.

* v4.3.1    2025-03-02

- Added new option ~magit-format-file-function,~ and two functions to
  optionally prefix file names with icons, with the help of either
  ~all-the-icons~ or ~nerd-icons~.  #5308

- Added new commands ~magit-previous-reference~ and ~magit-next-reference~,
  with entry point ~C-c C-r~.  Enable ~repeat-mode~ to keep navigating with
  ~p~ and ~n~.  #5310

Bugfixes:

- ~magit-commit-revise~ failed if no arguments were used.  #5306

- Some arguments were missing from diff menus when invoked from
  the status buffer.  #5309

- In some menus the bindings for ~--signoff~ conflicted with those for
  other arguments.  #5312

- Fixed unlikely issue in ~magit-git-mergetool~.  66e3ddffe4

- Unknown Git trailers resulted in a display error while writing
  commit messages.  8c27c910ca

- When the word at point matched the name of a branch, that was
  unconditionally treated as the commit-at-point.  This should only be
  done when that word is shown using an appropriate face.  2b3f2cb9ad

- Fixed bug in ~magit-section-cycle-diffs~.  #5319

- ~magit-stage-untracked~ was a bit fragile.  #5325

* v4.3.0    2025-02-04

- Added new option ~magit-refs-show-branch-descriptions~.  42ed6c1966

- When a stash cannot be applied using the trivial method, the user is
  offered some fallback methods.  The presentation of those has been
  improved.  #5253 a08b4dd513

- Added new hook options ~magit-revision-wash-message-hook~ and
  ~magit-log-wash-summary-hook~, and populate them with new and
  existing highlighting functions, making it easier to remove default
  highlighting and to add custom highlighting.  This also increases
  consistency between how commit summaries are shown in logs and when
  displaying complete commit messages.  f54fce0ecc..b86fe009e2

- ~amend!~ markers are now highlighted like ~fixup!~ and ~squash!~ markers.
  #5261

- ~magit-commit-create~ no longer amends to HEAD when called with a
  prefix argument.  The ~magit-commit~ menu offers four amend commands.
  That should be good enough.  5e60aa72e5

- ~magit-commit~ no longer features the obscure ~magit-commit-reshelve~ by
  default, but it can quickly be reinstated, using the level mechanism.
  20eb323b47

- Added new commands ~magit-commit-alter~ and ~magit-commit-revise~,
  completing the already extensive set of "fixup" commands.  #5261

- Improved commit menu, documentation and implementation details.
  #5261

- The branch at point is detected in more contexts now, i.e., when
  there is not actually a branch at point, but one can unambiguously
  be derived from the thing at point.  4876f1921e

- Reworked ~magit-process-password-prompt-regexps~ to be more permissive
  and better structured.  Hopefully that means we have to extend it
  less frequently going forward, when users run into new prompts.
  #5288

- Speed up listing untracked files in the status buffer, simplify how
  the list is configured, and give up on optionally using a tree.
  #5284

- Argument ~--signoff~ is now available in all menus that create commits.
  However, it is no longer shown in any menu by default.  See the end
  of [[https://docs.magit.vc/transient/Enabling-and-Disabling-Suffixes.html][Enabling and Disabling Suffixes]] to learn how to enable it in all
  menus at once in a single action.  #5297

- Began using the ~##~ macro from the ~llama~ package.  0a64982100

- Stopped depending on the ~dash~ package.  e40e8f1994

Bug fixes:

- When applying a stash, it was not always discovered when the trivial
  method was unsuccessful, and so the user was not offered the use of
  a fallback method.  #5253 929eb4dca5

- ~git-commit.el~ did not require ~magit-process~, which was only a
  problem when it is loaded without also loading the rest of Magit.
  #5280.

- The use of an external diff drivers was not prevented in some
  places.  #5282

- ~magit-blame-maybe-show-message~ did not protect against interpreting
  % in commit messages as %-specs.  d0e795f423

- Parts of commit message headers lost the intended background color.
  46c3d8b0ad

- The confirmation prompt of ~magit-worktree-delete~ failed to name the
  affected worktree.  #5286

- The wrong suffix color was used for ~magit-commit-absorb~ and
  ~magit-commit-autofixup~.  bfadd41079

- ~magit-stash-index~ did not use ~magit-stash-read-message-function~.
  #5295

- Fixed an error that occurred when creating ~magit-hunk-section-map~
  and the user has disabled ~smerge-command-prefix~.  The same bug
  exists in Emacs since 29.1, so this will only help users stuck
  on Emacs 28.  #5300

- When the value of a diff or log menu was being initialized from the
  arguments in the current buffer and the diff/log was already limited
  to a set of files, then all other arguments were discarded.  #5304

* v4.2.0    2025-01-01

- At least Git 2.25.0 is required now.  033a0c0cdc

- At least Emacs 27.1 is required now.  c1a86066e8

- Added new command ~magit-toggle-profiling~.  f637dd1877

- Added new command ~magit-toggle-subprocess-record~.  ec1f403af1

Bug fixes:

- Fixed a regression in ~transient-init-value~.  5b4c4aea1b

- Fixed setting ~fill-paragraph-function~ in
  ~git-commit-setup-changelog-support~.  139e0fcff3

- ~magit-log-refresh~ lacked the ~--since~ and ~--until~ arguments, which
  were already available in ~magit-log~.  3ecebe8d11

- Enabling verbose output in ~magit-commit-absorb~ caused an error.
  #5272

- In logs, no longer strip ~heads/~ prefix from branch names if a tag
  with the same name exists.  5cb3492464

- ~magit-list-special-refnames~ returned nonsense.  #5277

* v4.1.3    2024-12-06

- For most important sections, if an error occurs while inserting the
  section, the error message is now displayed in the section body.
  #5255

- ~magit-submodule-populate~ now supports ~--recursive~.  #5191 #5256

- Improved ~magit-process-password-prompt-regexps~.  #5257

Bug fixes:

- ~magit-stash-pop~ and ~magit-stash-apply~ sometimes installed conflicts
  for the user to resolve that are more complicated than they need to
  be.  #5253

- ~magit-stash-push~ placed ~--~ before other arguments.  #5260

- ~magit-autorevert~ failed to require ~magit-process~.  #5263

* v4.1.2    2024-11-02

- Add various minor process logging improvements:
  5b30c05d3a magit--git-insert: Collapse process section if appropriate
  b11524120e magit--git-insert: Optionally always log to process buffer
  cd6cf89d6a Use different face for debug-only process sections
  bba06845de magit-process-insert-section: Improve file-path comparison
  f2a6133443 magit-run-git-async: No longer clutter ~*Messages*~ buffer

Bug fixes:

- If the left margin was in use before ~magit-blame-mode~ started using
  that margin, then the old width was not restored when the mode was
  disabled.  #5236

- Prior to Tramp being loaded, setting ~magit-tramp-pipe-stty-settings~
  to ~nil~ resulted in an error, due to ~tramp-pipe-stty-settings~ not
  being bound yet.  #5240

- ~magit-copy-section-value~ no longer did anything for most section
  types.  #5244.

- Global git arguments often got added twice to the list of arguments
  ultimately passed to git.  914285a5e8

- Inserting the headers of status buffers involves temporary changes
  to ~magit-insert-section-hook~.  These changes were not restricted to
  the current buffer, causing errors when ~magit-git-debug~ is enabled
  and we thus insert sections in the process buffer, while the status
  buffer is being refreshed.  11e13640c4

- Some ~git~ errors were not logged despite ~magit-git-debug~ being
  enabled.  874fb0fede

- ~magit-browse-thing~ and ~magit-visit-thing~ tried to turn anything
  at point into an URL.  Now the bail if there is no URL at point.
  7c842b8ac0

* v4.1.1    2024-10-01

- Avoid unnecessary work when ~auto-revert-remote-files~ is ~nil~.  #5222

- Improved default choice offered by ~magit-branch-reset~ and
  ~magit-reset-*~.  #5230

Bug fixes:

- Added a workaround for a regression in Git v2.46.0.  #5212

- Section-specific bindings were removed when a section was expanded
  whose body is not inserted until the expansion takes place.
  9395de2c94

- Addressed an incompatibility with Eglot.  #5226

- Adapted to a change in ~define-globalized-minor-mode~ in Emacs 30,
  which caused ~diff-hl-mode~ to be enabled in blob buffers.  #5229

- When adding the commit at point to the completion defaults, it was
  assumed that ~minibuffer-default-add-function~ cannot be nil.
  6d0075f523

- ~magit-blame--format-string-1~ didn't handle a list of faces
  correctly.  5395798301

- Addressed an incompatibility with Indent-Bars.  #5233

* v4.1.0    2024-09-01

- The library ~git-commit.el~ is no longer distributed as a separate
  package, ~git-commit~, but as part of the ~magit~ package.

- Improved ~magit-tag-release~'s consistency and handling of arguments.
  #5102

- Updated tooling and other housekeeping.

Bug fixes:

- Only use an explicit range in ~magit-insert-recent-commits~, when also
  using ~--graph~.  With ~--graph~ it increases performance noticeably,
  but without it decreases performance somewhat.  #5075

- ~magit-completing-read-multiple~ now shows the default choice in the
  prompt, if a completion framework is used, for which that is useful.
  #5205.

* Older releases

See ~docs/RelNotes/~.
