# -*- mode: org -*-
* 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://magit.vc/manual/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/~.
