####################
Breezy Release Notes
####################

.. toctree::
   :maxdepth: 1

brz 3.3.22
##########

:3.3.22: 2026-05-05

 * Honour ``token`` entries in ``authentication.conf`` by sending an
   ``Authorization`` header preemptively over HTTP. ``brz gh-login`` and
   ``brz gitlab-login`` now write a ``token`` field, so subsequent git
   smart-HTTP fetch and push traffic to GitHub and GitLab reuses the
   forge credentials rather than going anonymous. (Jelmer Vernooĳ)

 * Use the ``vcsgraph`` package for graph, topological sort and
   known graph implementations rather than local copies.
   (Jelmer Vernooĳ)

 * Add a format-independent ``MemoryTree`` in ``breezy.memorytree``
   that does not use file ids or inventories. The bzr-specific
   ``MemoryTree`` has moved to ``breezy.bzr.memorytree``.
   ``Branch.create_memorytree()`` is now format-specific, with
   implementations on ``BzrBranch``, ``RemoteBranch`` and
   ``LocalGitBranch``. (Jelmer Vernooĳ)

 * Drive three-way merges by paths rather than by file ids, so
   non-inventory trees (including the new generic ``MemoryTree``)
   can participate in merges. (Jelmer Vernooĳ)

 * Fix ``MalformedTransform: unversioned executability`` crash when
   merging a git tree where THIS renames a file that OTHER modifies.
   (Jelmer Vernooĳ)

 * Fix ``revision_tree()`` crash when a bzr revision id
   embeds a git tag SHA rather than a commit SHA.
   (Jelmer Vernooĳ)

 * Fix TLS certificate verification error when accessing an HTTPS
   server through an HTTP proxy. (L. Guruprasad)

 * Use the ``catalogus`` package for the registry implementation
   rather than a local copy. (Jelmer Vernooĳ)

 * Fix builtin command lookup when running brz commands in-process
   without going through ``main()``. (Jelmer Vernooĳ)

 * Hold a read lock around ``workspace.extras()`` to avoid
   inconsistent results under concurrent access. (Jelmer Vernooĳ)

brz 3.3.21
##########

 * Require testtools 2.8+.
   (Jelmer Vernooĳ)

 * Restrict maximum dulwich version.
   (Jelmer Vernooĳ)

 * Fix ``iter_bytes()`` usage in tests.
   (Jelmer Vernooĳ)

 * Fix object store lifecycle management for dulwich 0.25+.
   (Jelmer Vernooĳ)

brz 3.3.20
##########

 * Fix ``UTextWrapper`` to properly drop trailing whitespace when wrapping
   long words, matching Python 3.13's ``textwrap`` behavior.
   (Jelmer Vernooĳ)

brz 3.3.19
##########

 * Fix compatibility with Dulwich 0.25.
   (Jelmer Vernooĳ)

brz 3.3.18
##########

 * Add warning about known issues in ``bzr fast-export``
   (Jelmer Vernooĳ)

brz 3.3.17
##########

 * Fix compatibility with newer versions of Dulwich.
   (Jelmer Vernooĳ)

brz 3.3.16
##########

:3.3.16: 2025-10-29

* Mark PyO3 0.27 as compatible. (Jelmer Vernooĳ)

* Drop support for Python 3.9. (Jelmer Vernooĳ)

brz 3.3.15
##########

:3.3.15: 2025-10-26

* Add Python 3.14 support. (Jelmer Vernooĳ, #2121688)

* Migrate Rust code to modern PyO3 0.26 API to eliminate deprecation warnings.
  (Jelmer Vernooĳ)

brz 3.3.14
##########

There was no 3.3.14 release.

brz 3.3.13
##########

:3.3.13: 2025-08-31

* Add warning when accessing Bazaar branches on Launchpad, as Launchpad
  is phasing out Bazaar code hosting. The warning can be suppressed by
  adding ``launchpad_bazaar_deprecation`` to the ``suppress_warnings``
  configuration option. (Jelmer Vernooĳ)

* Fix compatibility with paramiko 4.0.0, which removed DSA key support.
  (Jelmer Vernooĳ)

* Add Python 3.14 support. (Jelmer Vernooĳ)

* Cope with removed ``ast.Str`` in Python 3.14. (Jelmer Vernooĳ)

* Use released dulwich rather than development version. (Jelmer Vernooĳ)

* Fix git object store compatibility issues with dulwich. (Jelmer Vernooĳ)

* git: Ensure tags are pushed for local operations. (Jelmer Vernooĳ)

* Fix typing issues with newer versions of typing-extensions. (Jelmer Vernooĳ)

* Drop support for Bazaar on Launchpad. (Jelmer Vernooĳ)

* Remove references to Bazaar codehosting on Launchpad. (Jelmer Vernooĳ)

* Improve installation instructions for modern Python. (Jelmer Vernooĳ, #2119976)

brz 3.3.12
##########

:3.3.12: 2025-05-13

* Drop use of ``PyInt_AsUnsignedLongMask``, which is deprecated in
  modern Python. (Jelmer Vernooĳ)

brz 3.3.11
##########

:3.3.11: 2025-04-06

* Drop static tuple. This is breaking Python
  3.13 support, Python has made improvements to tuples
  that should reduce the need for this. We're
  also moving performance-critical code to rust
  in the future. (#2102194, Jelmer Vernooĳ)

* Fix timezone handling, avoid looking up
  timezone. (#2103478, Jelmer Vernooĳ)

* Drop unused ``simple_set`` extension.
  (Jelmer Vernooĳ)

brz 3.3.10
##########

:3.3.10: 2025-03-14

* Breezy itself is now hosted on GitHub -
  https://github.com/breezy-team/breezy.
  (Jelmer Vernooĳ)

* Bump PyO3 to 0.23. (Jelmer Vernooĳ)

* Add support for Python 3.13.
  (Jelmer Vernooĳ, #2102194)

brz 3.3.9
#########

:3.3.9: 2024-10-20

* Update pyo3 to 0.22, adding support for Python 3.13. (Jelmer Vernooĳ,
  #2084288)

brz 3.3.8
#########

:3.3.8: 2024-06-27

* Prevent builds with PyO3 0.22 and up, which are incompatible with
  Breezy 3.3. (Jelmer Vernooĳ)

brz 3.3.7
#########

:3.3.7: 2024-04-01

* Fix compatibility with Python 3 < 3.11, which don't have datetime.UTC. (Jelmer Vernooĳ)

brz 3.3.6
#########

:3.3.6: 2024-04-01

* Ignore race conditions loading config files. (Jelmer Vernooĳ)

* Fix tests on Python 3.12. (Jelmer Vernooĳ)

brz 3.3.5
#########

:3.3.5: 2024-01-19

* Fix compatibility with Python 3.12. Jelmer Vernooĳ, #2047991)

brz 3.3.4
#########

:3.3.4: 2023-09-04

* Improve handling of lp: URLs when lp: insteadOf is set in gitconfig.
  (Jelmer Vernooĳ)

* Allow setting _ConnectRequestor.selector.  (Jelmer Vernooĳ)

* Fix brz-email bug on Python 3. (Triss)

* Fix compatibility with newer versions of dulwich.
  (Jelmer Vernooĳ)

brz 3.3.3
#########

:3.3.3: 2023-05-23

External Compatibility Breaks
*****************************

.. These may require users to change the way they use Breezy.

* Drop support for the ubuntu: and debianlp: aliases.
  These imports have long been broken.
  (Jelmer Vernooĳ)

* Fix support for newer versions of Dulwich.
  (Jelmer Vernooĳ)

brz 3.3.2
#########

:3.3.2: 2023-01-21

Improvements
************

.. Improvements to existing commands, especially improved performance
   or memory usage, or better results.

* Update Git code to use newer Dulwich APIs for pack generation,
  significantly improving performance. (Jelmer Vernooĳ)

* gitlab: Support URL schemes https, http. (Jelmer Vernooĳ)

* Bundle the webdav plugin. (Jelmer Vernooĳ)

* Add supports_auto_merge setting. (Jelmer Vernooĳ)

* Add --auto argument for "brz propose". 
  (Jelmer Vernooĳ)

Bug Fixes
*********

.. Fixes for situations where brz would previously crash or give incorrect
   or undesirable results.

* Fix anonymous access of lp: URLs. (Jelmer Vernooĳ, #2000806)

* gitlab: Handle GitLab consistently returning 500 when updating
  description in some versions. (Jelmer Vernooĳ)

* github: Support multiple pages when enumerating forks.
  (Jelmer Vernooĳ)


brz 3.3.1
#########

:3.3.1: 2022-11-22

External Compatibility Breaks
*****************************

.. These may require users to change the way they use Breezy.

* Drop support for Python < 3.7. (Jelmer Vernooĳ)

* Factored gettext support out into setuptools-gettext. (Jelmer Vernooĳ)

New Features
************

.. New commands, options, etc that users may wish to try out.

* Add ``--open`` argument to ``brz propose``. (Jelmer Vernooĳ)

* New ``brz web-open`` command, which opens a branch or
  merge proposal in a web browser. Deprecates ``brz lp-open``.
  (Jelmer Vernooĳ)

Improvements
************

.. Improvements to existing commands, especially improved performance
   or memory usage, or better results.

* Various portability fixes for Mac OS X and Windows. (Jelmer Vernooĳ)

* Ship typing hints. (Jelmer Vernooĳ)

* Build binary on GitHub for most Python platforms.
  (Jelmer Vernooĳ)

* Drop trivial pkg-version dependency. (Ondřej Pohořelský)

* Drop use of unnecessary ``iso8061`` module for Forge interactions.
  (Jelmer Vernooĳ)

* Support finding GitHub PRs by URL. (Jelmer Vernooĳ)

Bug Fixes
*********

.. Fixes for situations where brz would previously crash or give incorrect
   or undesirable results.

* Fix compatibility with Python 3.11. (Jelmer Vernooĳ, #1995814)
  + Remove use of PyUnicode_FromUnicode, gone in Python 3.11.
  + Fix reference counter tests for Python 3.11.

* Handle unexpected HTTP Status errors from Dulwich, converting them
  to the appropriate Breezy exceptions. (Jelmer Vernooĳ)

* Handle out of file descriptor errors in ``breezy.dirty_tracker``.
  (Jelmer Vernooĳ)

* git: Properly decode remote tag names rather than leaving them as bytes.
  (Jelmer Vernooĳ)

* Fix compatibility with Dulwich >= 0.20.50. (Jelmer Vernooĳ)

* Fix ``Tree.get_file_mtime`` in shallow git trees. (Jelmer Vernooĳ)

Documentation
*************

.. Improved or updated documentation.

* Remove various references to brz-gtk and breezy.
  (Jelmer Vernooĳ, #1926890, #1837056, #1837053)

API Changes
***********

.. Changes that may require updates in plugins or other code that uses
   breezy.

* Removed ``breezy.revision.ensure_null``, originally added for
  the migation from ``None`` to ``NULL_REVISION``. (Jelmer Vernooĳ)

* New ``Forge.create_project`` method. (Jelmer Vernooĳ)

* New ``breezy.forge.get_forge_by_hostname`` function.
  (Jelmer Vernooĳ)

* New ``Tree.is_special_filename`` to match on e.g.
  ``.gitattributes`` and ``.bzrignore``. (Jelmer Vernooĳ)

Internals
*********

.. Major internal changes, unlikely to be visible to users or plugin
   developers, but interesting for brz developers.

* Switch to using Launchpad REST API for lp: URL lookups,
  rather than XML/RPC. (Jelmer Vernooĳ)

* Migrate from pkg_resources to importlib for entrypoints.
  (Jelmer Vernooĳ)

* New exception ``UnsupportedVcs``. (Jelmer Vernooĳ)

* Support titles for merge proposals. (Jelmer Vernooĳ)

* Use standard python infrastructure to mark extensions as
  optional. (Jelmer Vernooĳ)

* Add pyproject.toml. (Jelmer Vernooĳ)

Testing
*******

.. Fixes and changes that are only relevant to brz's test framework and
   suite.  This can include new facilities for writing tests, fixes to
   spurious test failures and changes to the way things should be tested.

* Increased timeouts since e.g. the setup test takes longer to run
  now we're compiling rust files. (Jelmer Vernooĳ)

* Raise exception for timed out test rather than killing entire process
  when hitting timeouts. (Jelmer Vernooĳ)

* Add xfail lists for Mac OS X and Windows. (Jelmer Vernooĳ)

* Properly clear BRZ_SSH in tests. (Jelmer Vernooĳ)

brz 3.3.0
#########

:3.3.0: 2022-10-07

External Compatibility Breaks
*****************************

.. These may require users to change the way they use Breezy.

* Breezy now uses the system merge3 rather than bundling its own copy.
  (Jelmer Vernooĳ)

* Breezy now requires PyYAML. (Jelmer Vernooĳ)

* Breezy now requires setuptools-rust and a rust compiler to
  be built. (Martin Packman, Jelmer Vernooĳ)

New Features
************

.. New commands, options, etc that users may wish to try out.

* Add --recurse-nested argument to 'brz export'.
  (Jelmer Vernooĳ)

Improvements
************

.. Improvements to existing commands, especially improved performance
   or memory usage, or better results.

* Add an ``extra`` for installing PGP dependencies.
  (Jelmer Vernooĳ)

* Convert multiple authors to the Co-authored-by field.
  (Jelmer Vernooĳ)

* github: Lazily load github pull requests, improving
  performance. (Jelmer Vernooĳ)

* github: Return canonical URLs for branches.
  (Jelmer Vernooĳ)

* Avoid deprecated distutils.version, ahead of removal.
  (Jelmer Vernooĳ)

* Add a docker file. (Jelmer Vernooĳ)

* launchpad: Store Launchpad credentials in authentication.conf.
  (Jelmer Vernooĳ)

* git: Support accessing git branch configuration.
  (Jelmer Vernooĳ)

* pgp: Add support for create_signatures=when-possible
  (Jelmer Vernooĳ)

* propose: By default, don't push tags when proposing changes.
  (Jelmer Vernooĳ)

* git: Split out and separately report ProtectedBranchHookDeclined.
  (Jelmer Vernooĳ)

* git: Avoid reading entire pack files into memory.
  (Jelmer Vernooĳ)

Bug Fixes
*********

.. Fixes for situations where brz would previously crash or give incorrect
   or undesirable results.

* git: Fix handling of empty directories in iter_changes.
  (Jelmer Vernooĳ)

* fastimport: Open stdin in binary mode. (Alexander Grund)

* Fix printing of exceptions for unsupported formats.
  (Jelmer Vernooĳ)

* Fix compatibility with modern dulwich.
  (Jelmer Vernooĳ)

* bzr: Only update working tree when pushing to active branch.
  (Jelmer Vernooĳ)

* gitlab: Fix API access; now seems to reject ';' as separator of url parameters.
  (Jelmer Vernooĳ)

* Launchpad: Fix instance iteration.
  (Jelmer Vernooĳ)

* git: Fix remote branch reference handling.
  (Jelmer Vernooĳ)

* git: Handle symref loops. (Jelmer Vernooĳ)

* Fix handling of chunked HTTP requests.
  (Jelmer Vernooĳ)

* git: Fix handling of date: revision specs.
  (Jelmer Vernooĳ)

* git: Support insteadOf / pushInsteadOf.
  (Jelmer Vernooĳ)

Documentation
*************

.. Improved or updated documentation.

* Add link to Matrix room, point to new IRC channel.
  (Jelmer Vernooĳ)

API Changes
***********

.. Changes that may require updates in plugins or other code that uses
   breezy.

* Various errors have moved out of ``breezy.errors`` to
  the modules they are related to. Including:
  UnsupportedProtocol, FileExists and NoSuchFile from breezy.errors => breezy.transport
  (Jelmer Vernooĳ)

* Add ``MergeProposal.set_target_branch()`` method.
  (Jelmer Vernooĳ)

* Move ``static_tuple`` to ``breezy.bzr``. (Jelmer Vernooĳ)

Internals
*********

.. Major internal changes, unlikely to be visible to users or plugin
   developers, but interesting for brz developers.

* File ids are mostly gone from the API. There are a few select
  cases where they are still used.
  (Jelmer Vernooĳ)

* python2-cleanup: Remove obsolete __cmp__. (Jelmer Vernooĳ)

* bzr: Support name argument in ControlDir.push_branch.
  (Jelmer Vernooĳ)

* Fix flake8 with newer versions of flake8.
  (Jelmer Vernooĳ)

* Avoid deprecated urllib.parse.{splittype,splitport,splithost}.
  (Jelmer Vernooĳ)

* Improve handling of remote git trees; improved performance,
  support for more functions.
  (Jelmer Vernooĳ)

* git: Raise custom error for unknown encodings in Git commits.
  (Jelmer Vernooĳ)

* Use google docstrings in more places, fixing errors from pydoctor in the process.
  (Jelmer Vernooĳ)

* Lockdir now uses yaml rather than RIO.
  (Jelmer Vernooĳ)

Testing
*******

.. Fixes and changes that are only relevant to brz's test framework and
   suite.  This can include new facilities for writing tests, fixes to
   spurious test failures and changes to the way things should be tested.

* Disable known failing test_build_and_install on GitHub.
  (Jelmer Vernooĳ)

* bashcomp: Preserve environment when invoking brz.
  (Jelmer Vernooĳ)

..
   vim: tw=74 ft=rst ff=unix
