#+OPTIONS: toc:nil

* Recent changes

** [[https://codeberg.org/emacs-jj-vc/vc-jj.el/compare/v0.4...v0.5][0.5]] - 2025-12-21

*** Added

- Added support for ~vc-region-history~.  Note that this requires the repository to be co-located since we call ~vc-git-region-history~, but repositories are co-located by default since jujutsu 0.34.
- Added ~vc-jj-clone~, making it possible to run ~vc-clone~.
- Define a new face: ~vc-jj-log-view-commit~.  This is the face used for commit IDs in JJ Log View buffers.
- Define a new face: ~vc-jj-log-view-bookmark~.  This is the face used for bookmark names in JJ Log View buffers.
- In the JJ Log View buffer:
  - Fontify conflict indicators (~vc-conflict-state~)
  - Fontify commit IDs (~vc-jj-log-view-commit~)
  - Fontify bookmark names (~vc-jj-log-view-bookmark~)
- New user option: ~vc-jj-root-log-format~. ~vc-jj-root-log-format~ controls the format and fontification of the Log View buffer created from ~vc-print-root-log~.
- Added functionality for ~vc-print-log~ (the "long" revision log format).

*** Changed

- Commands specific to vc-jj in the JJ Log View buffer have been renamed to have a "vc-jj-log-view-" prefix.
- Only abandon a change with ~vc-jj-log-view-abandon-change~ once the user confirms their decision.
- Bookmark operations in the JJ Log View buffer (e.g., ~vc-jj-log-view-bookmark-delete~, ~vc-jj-log-view-abandon-change~) no longer prompt to confirm reverting the parent buffer (~vc-parent-buffer~) when ~auto-revert-mode~ is already enabled in that buffer.
- In Emacs 30.1 and newer, reverting a JJ Log View buffer will, when possible, keep point on the same revision as before the revert. To undo this, add a function to ~vc-jj-log-view-mode-hook~ that removes ~vc-jj-log-view-restore-position~ from the local value of ~revert-buffer-restore-functions~.

*** Fixed

- Fixed ~vc-jj-diff~ not transforming filenames into jj fileset syntax. This fixes commands like ~vc-diff~ and ~log-view-diff~ among others.
- Fixed a bug related to vc-jj's integration with project.el in cases where a git repo is located within a subdirectory of a jj repo.  Previously, when inside the git repo, project.el would erroneously detect the jj repo to be current one (instead of the git repo, which is closer).  Now, project.el correctly detects the closer git repo.
- ~vc-jj-bookmark-delete~ now properly recognizes the names of local bookmarks that are pushable to a remote.
- Prevent the possibility of operating on the wrong revisions when in stale JJ Log View buffers (Log View buffers that are not up-to-date with the repository).
- Show the correct diff in log-edit buffers created by ~log-view-modify-change-comment~.
- Fix ~vc-diff~ in files whose revision has multiple parents.

** [[https://codeberg.org/emacs-jj-vc/vc-jj.el/compare/v0.3...v0.4][0.4]] - 2025-09-03

*** Added

- Added ~vc-jj-retrieve-tag~, which makes it possible to use vc commands
  like ~vc-switch-branch~, which are implemented on top of
  ~vc-retrieve-tag~.
- Added ~vc-jj-create-tag~, which implements the vc.el create-tag
  method.  This makes it possible to use vc commands like
  ~vc-create-branch~, which call ~vc-create-tag~.
- Added several commands to manipulate bookmarks in
  ~vc-jj-log-view-mode~: ~vc-jj-bookmark-set~, ~vc-jj-bookmark-delete~, and
  ~vc-jj-bookmark-rename~.  These have bindings under the "b" prefix key
  in ~vc-jj-log-view-mode~: ~vc~ buffers.
- Added list of other jj support packages for Emacs to the
  documentation -- not everyone is looking for vc integration :)

*** Fixed

- vc-jj now does not prevent non-vc Emacs operations (dired, editing
  files) in a corrupted jj repository.  Blocking this was never
  intended, but was a consequence of letting errors escape from
  ~vc-jj-dir-status-files~.
- Properly handle cases where directory file paths are passed to
  vc-jj's ~vc-jj--filename-to-fileset~, which vc-jj uses to transform
  file names into forms adhering to jj's fileset language.  Now,
  calling ~vc-next-action~ on a directory listing with changed files in
  a vc-dir buffer will commit those changed files.  Previously an
  empty commit would be made.
- Fix error when calling ~vc-find-revision~ due to erroneous argument to
  ~erase-buffer~, which accepts no arguments.  Commands that use
  ~vc-find-revision~, like ~vc-revision-other-window~, now do not error.
- Identify the "removed" vc file state. Previously, removed files
  would be incorrectly labeled as "ignored."
- vc-jj now sets up ~log-edit-callback~ so ~log-edit-done~ works properly
  when editing ~.jjdescription~ files.  This makes Emacs work properly
  as external editor when calling ~jj commit~ or similar from the
  terminal.
- vc-jj installation now proceeds without warnings from the byte
  compiler.

** [[https://codeberg.org/emacs-jj-vc/vc-jj.el/compare/v0.2...v0.3][0.3]] - 2025-06-15

*** Changed

- The behavior of ~vc-jj-print-log~ is now closer to the behavior
  documented for ~vc-print-log~: each commit is displayed in one line,
  and RET expands the current entry to show commit details.  Remove
  the unused customization options ~vc-jj-colorize-log~ and
  ~vc-jj-log-template~.

- Files of type ~.jjdescription~ are now edited using ~log-edit-mode~
  instead of fundamental mode.  (Such files are created by jj when the
  user runs ~jj describe~ or ~jj commit~ from the command line.)

- ~vc-dir~ headers now display more information:
  - All information about the current changeset (change id, commit id,
    first line of description) is contained in one line.
  - Information about the current changeset's parent(s) is shown in
    the same format.

*** Fixed

- Fix breakage when the project directory contains a file too large to
  be automatically added.  (jj prints a warning in that case, even
  when run with ~--quiet~, so we need to discard output to stderr.)

** [[https://codeberg.org/emacs-jj-vc/vc-jj.el/compare/v0.1...v0.2][0.2]] - 2025-04-18

*** Fixed

- Properly escape filenames containing jj fileset operator characters.

** [[https://codeberg.org/emacs-jj-vc/vc-jj.el/src/tag/v0.1][0.1]] - 2025-03-16

- First released version.
