# Kopia changelog
> Fast, encrypted, deduplicating backup.
- Vendor: Kopia
- Category: Productivity
- Platforms: Desktop
- Official site: https://kopia.io
- Tracked by: What's New (https://whatsnew.fyi/product/kopia)
- Harvested from: GitHub (kopia/kopia)
- Entries below: 10 (newest first)
What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog.
## Releases
### v0.23.1
- Date: 2026-06-16
- Version: v0.23.1
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.23.1
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.23.1
- Labels: Platforms: Desktop
- **fixed** — Fix a rare race condition that might lead to data loss
###### Summary
Kopia v0.23.1. is a bugfix release which fixes a rare race condition which might lead to a data loss - an upgrade is recommended - See https://github.com/kopia/kopia/issues/5371
###### Repository
* Basic tests for getting epoch manager blob set ([#5418](https://github.com/kopia/kopia/issues/5418)) by Julio López
* selection of next epoch to compact ([#5373](https://github.com/kopia/kopia/issues/5373)) by Julio López
###### Storage Providers
* no_extra_providers build tag ([#5375](https://github.com/kopia/kopia/issues/5375)) by Julio López
###### Linter
* annotations for other platforms ([#5413](https://github.com/kopia/kopia/issues/5413)) by Julio López
###### Graphical User Interface
### v0.23.0
- Date: 2026-05-12
- Version: v0.23.0
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.23.0
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.23.0
- Labels: Platforms: Desktop
- **security** — Restrict insecure unauthenticated server to loopback binds
- **added** — Registration mechanism for storage providers
- **added** — Hash benchmarking count
- **changed** — Leverage x/term.IsTerminal
- **fixed** — Handle potential conversion overflow when setting progress default
- **removed** — Remove support for LZ4
- **fixed** — Retained log size double counting
- **changed** — Make counters and size stats uint64 for consistency
- **fixed** — Address potential conversion overflows
- **fixed** — Do not include concatenated entries in log
- **changed** — Move SafeLongFilename to ospath
- **changed** — Add byte units to maintenance stat summaries
- **fixed** — Sync index blob file before closing
- **fixed** — Failures when exceeding Windows MAX_PATH
- **fixed** — ErrorEntry policy resolution to use child policy
- **fixed** — Inaccessible entry causes parent directory to be skipped
- **changed** — Warn messages for extra storage providers
- **changed** — Perform maximum of 2 attempts in PutBlobInPath
- **fixed** — Cleanup temporary file on put blob failure
- **fixed** — Sync file in FS provider to ensure data is persisted
###### Command-Line Interface
* **[BREAKING CHANGE]** restrict insecure unauthenticated server to loopback binds ([#5354](https://github.com/kopia/kopia/issues/5354)) by Jarek Kowalski
* registration mechanism for storage providers ([#5350](https://github.com/kopia/kopia/issues/5350)) by Julio López
* hash benchmarking count ([#5312](https://github.com/kopia/kopia/issues/5312)) by Julio López
* leverage x/term.IsTerminal ([#5308](https://github.com/kopia/kopia/issues/5308)) by Julio López
* handle potential conversion overflow when setting progress default ([#5271](https://github.com/kopia/kopia/issues/5271)) by Julio López
###### KopiaUI App
* skip htmlui tests that are timing out ([#5257](https://github.com/kopia/kopia/issues/5257)) by Julio López
###### General Improvements
* bigmapbench profiling ([#5321](https://github.com/kopia/kopia/issues/5321)) by Julio López
* clean nits ([#5313](https://github.com/kopia/kopia/issues/5313)) by Julio López
* remove support for LZ4 ([#5296](https://github.com/kopia/kopia/issues/5296)) by Julio López
* retained log size double counting ([#5302](https://github.com/kopia/kopia/issues/5302)) by Julio López
* make counters and size stats uint64 for consistency ([#5262](https://github.com/kopia/kopia/issues/5262)) by Julio López
* address potential conversion overflows ([#5266](https://github.com/kopia/kopia/issues/5266)) by Julio López
* string nits ([#5265](https://github.com/kopia/kopia/issues/5265)) by Julio López
* cleanup nits ([#5236](https://github.com/kopia/kopia/issues/5236)) by Julio López
* do not included concatenated entries in log ([#5231](https://github.com/kopia/kopia/issues/5231)) by lif
* move `SafeLongFilename` to `ospath` ([#5227](https://github.com/kopia/kopia/issues/5227)) by Julio López
* add byte units to maintenance stat summaries ([#5178](https://github.com/kopia/kopia/issues/5178)) by Julio López
###### Repository
* sync index blob file before closing ([#5292](https://github.com/kopia/kopia/issues/5292)) by Julio López
* failures when exceeding Windows `MAX_PATH` ([#5226](https://github.com/kopia/kopia/issues/5226)) by Julio López
###### Snapshots
* ErrorEntry policy resolution to use child policy ([#5234](https://github.com/kopia/kopia/issues/5234)) by Baixiaochun
* inaccessible entry causes parent directory to be skipped ([#5217](https://github.com/kopia/kopia/issues/5217)) by Julio López
###### Storage Providers
* warn messages for extra storage providers ([#5324](https://github.com/kopia/kopia/issues/5324)) by Julio López
* perform maximum of 2 attempt in `PutBlobInPath` ([#5168](https://github.com/kopia/kopia/issues/5168)) by Julio López
* require.NoError ([#5166](https://github.com/kopia/kopia/issues/5166)) by Julio López
* update injected error message ([#5165](https://github.com/kopia/kopia/issues/5165)) by Julio López
* make tests with injected errors more robust ([#5164](https://github.com/kopia/kopia/issues/5164)) by Julio López
* cleanup temporary file on put blob failure ([#5157](https://github.com/kopia/kopia/issues/5157)) by Julio López
* notify after releasing the lock ([#5154](https://github.com/kopia/kopia/issues/5154)) by Julio López
* sync file in FS provider to ensure data is persisted ([#5150](https://github.com/kopia/kopia/issues/5150)) by Julio López
###### Testing
* prefer assert.NoError ([#5299](https://github.com/kopia/kopia/issues/5299)) by Julio López
* nits in TestSnapFail tests ([#5228](https://github.com/kopia/kopia/issues/5228)) by Julio López
* `TestSnapshotFail`* ([#5225](https://github.com/kopia/kopia/issues/5225)) by Julio López
###### Infrastructure
* tweak copilot instructions ([#5278](https://github.com/kopia/kopia/issues/5278)) by Julio López
* update agent instructions ([#5153](https://github.com/kopia/kopia/issues/5153)) by Julio López
###### CI/CD
* split out linux-based lint targets ([#5349](https://github.com/kopia/ko
_[Truncated at 4000 characters — full notes: https://github.com/kopia/kopia/releases/tag/v0.23.0]_
### v0.22.3
- Date: 2025-12-02
- Version: v0.22.3
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.22.3
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.22.3
- Labels: Platforms: Desktop
- **fixed** — Fix regression in dependency used for compression
- **added** — Add localfs support for passing options
###### Defect Fixes
* Fixes regression in dependency used for compression ([#5049](https://github.com/kopia/kopia/issues/5049))
###### Snapshots
* **New Feature** localfs support for passing options ([#5044](https://github.com/kopia/kopia/issues/5044)) by Jarek Kowalski
###### CI/CD
* Remove ineffective omitempty tags ([#5037](https://github.com/kopia/kopia/issues/5037)) by Julio López
### v0.22.2
- Date: 2025-11-26
- Version: v0.22.2
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.22.2
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.22.2
- Labels: Platforms: Desktop
- **fixed** — Fix regression where rclone was executed with a cancelling context
- **fixed** — Allow S3 versioned tests cleanup to succeed
###### Storage Providers
* Fix regression #5039: execute rclone with non-cancelling context ([#5040](https://github.com/kopia/kopia/issues/5040)) by Julio López
###### Testing
* allow S3 versioned tests cleanup to succeed ([#5038](https://github.com/kopia/kopia/issues/5038)) by Julio López
###### CI/CD
* make PR title options consistent with chlog ([#5036](https://github.com/kopia/kopia/issues/5036)) by Julio López
### v0.22.1
- Date: 2025-11-25
- Version: v0.22.1
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.22.1
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.22.1
- Labels: Platforms: Desktop
- **fixed** — Fix issue showing an empty UI for some users
- **changed** — Make purpose a string parameter
###### Graphical User Interface
* Fix issue showing an empty UI for some users ([#5006](https://github.com/kopia/kopia/issues/5006), [#5029](https://github.com/kopia/kopia/issues/5029),[#5034](https://github.com/kopia/kopia/issues/5034),[#5035](https://github.com/kopia/kopia/issues/5035)) by Jarek Kowalski and Julio López.
###### Other Improvements
* make `purpose` a `string` parameter ([#5015](https://github.com/kopia/kopia/issues/5015)) by Julio López
###### Testing Improvements
* leverage `testing.T.Context` in testlogging ([#5008](https://github.com/kopia/kopia/issues/5008)) by Julio López
* use contexts in tests ([#5009](https://github.com/kopia/kopia/issues/5009)) by Julio López
* pass context in helpers for running Docker ([#5012](https://github.com/kopia/kopia/issues/5012)) by Julio López
* cleanup `TestKopiaRunner` ([#5010](https://github.com/kopia/kopia/issues/5010)) by Julio López
###### CI/CD
* enable noctx linter ([#4972](https://github.com/kopia/kopia/issues/4972)) by Nathan Baulch
* prevent writing outside of installation target directory ([#5003](https://github.com/kopia/kopia/issues/5003)) by Julio López
### v0.22.0
- Date: 2025-11-18
- Version: v0.22.0
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.22.0
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.22.0
- Labels: Platforms: Desktop
- **fixed** — Fix potential overflow in integer conversion
- **changed** — Make --progress flag visible and use it in sync-to command
- **fixed** — Ensure auto-maintenance errors are propagated
- **changed** — Enable quick maintenance by default on repository creation
- **added** — Extend stats for content verification
- **changed** — Add additional safeguard for dangerous commands
- **deprecated** — Deprecate dangerous repo repair sub-command
- **changed** — Reword message for dangerous commands
- **removed** — Remove deprecated no-op flags
- **fixed** — Handle errors closing writable descriptors
- **fixed** — Check for nil before dereferencing field
- **fixed** — Check bounds for memory allocation
- **added** — Fix display errors for maintenance stats
- **added** — Add stats to maintenance run - SnapshotGC
- **removed** — Remove dry run option for blob retention extension
- **added** — Add maintenance stats for rewrite contents phase
- **added** — Add maintenance stats for clean up logs phase
- **added** — Add maintenance stats for delete unreferenced packs phase
- **added** — Add maintenance stats for drop deleted contents and compact indexes
###### Command-Line Interface
* potential overflow in integer conversion ([#4993](https://github.com/kopia/kopia/issues/4993)) by Julio Lopez
* make --progress flag visible and use it in sync-to command ([#3542](https://github.com/kopia/kopia/issues/3542)) ([#4877](https://github.com/kopia/kopia/issues/4877)) by yinheli
* ensure auto-maintenance errors are propagated ([#4851](https://github.com/kopia/kopia/issues/4851)) by Julio Lopez
* enable quick maintenance by default on repo creation ([#4840](https://github.com/kopia/kopia/issues/4840)) by Julio Lopez
* **New Feature** extend stats for content verification ([#4830](https://github.com/kopia/kopia/issues/4830)) by Julio Lopez
* additional safeguard dangerous commands ([#4767](https://github.com/kopia/kopia/issues/4767)) by Julio Lopez
* deprecate dangerous repo repair sub-command ([#4766](https://github.com/kopia/kopia/issues/4766)) by Julio Lopez
* reword message for dangerous commands ([#4765](https://github.com/kopia/kopia/issues/4765)) by Julio Lopez
* remove deprecated no-op flags ([#4764](https://github.com/kopia/kopia/issues/4764)) by Julio Lopez
###### General Improvements
* handle errors closing writable descriptors ([#4998](https://github.com/kopia/kopia/issues/4998)) by Julio Lopez
* avoid wrapping always-nil error ([#4997](https://github.com/kopia/kopia/issues/4997)) by Julio Lopez
* check for nil before de-refencing field ([#4996](https://github.com/kopia/kopia/issues/4996)) by Julio Lopez
* check bounds for memory allocation ([#4995](https://github.com/kopia/kopia/issues/4995)) by Julio Lopez
* fix typos ([#4986](https://github.com/kopia/kopia/issues/4986)) by Julio Lopez
* **New Feature** fix display errors for maintenance stats ([#4984](https://github.com/kopia/kopia/issues/4984)) by lyndon-li
* omitzero JSON tag in policy structs ([#4910](https://github.com/kopia/kopia/issues/4910)) by Julio Lopez
* **New Feature** add stats to maintenance run - SnapshotGC ([#4964](https://github.com/kopia/kopia/issues/4964)) by lyndon-li
* leverage `stats.CountSum` in maintenance stats ([#4963](https://github.com/kopia/kopia/issues/4963)) by Julio Lopez
* remove dry run option for blob retention ext ([#4962](https://github.com/kopia/kopia/issues/4962)) by Julio Lopez
* maintenance stats for rewrite contents phase ([#4961](https://github.com/kopia/kopia/issues/4961)) by lyndon-li
* `extendBlobRetentionTime` ([#4960](https://github.com/kopia/kopia/issues/4960)) by Julio Lopez
* **New Feature** maintenance stats for clean up logs phase ([#4959](https://github.com/kopia/kopia/issues/4959)) by lyndon-li
* consistent use "pack" where possible ([#4952](https://github.com/kopia/kopia/issues/4952)) by Julio Lopez
* fix field names in ExtendBlobRetentionStats ([#4958](https://github.com/kopia/kopia/issues/4958)) by Julio Lopez
* **New Feature** maintenance stats for delete unreferenced packs phase ([#4955](https://github.com/kopia/kopia/issues/4955)) by lyndon-li
* **New Feature** maintenance stats for drop deleted contents and compact indexes ([#4948](https://github.com/kopia/kopia/issues/4948)) by lyndon-li
* fix field names in CompactSingleEpochStats ([#4947](https://github.com/kopia/kopia/issues/4947)) by Julio Lopez
* use explicit return values ([#4940](https://github.com/kopia/kopia/issues/4940)) by Julio Lopez
* **New Feature** add stats to maintenance run - AdvanceEpoch ([#4937](https://github.com/kopia/kopia/issues/4937)) by lyndon-li
* diskCommitedContentIndexCache ([#4939](https://github.com/kopia/kopia/issues/4939)) by Julio Lopez
* buildinfo helpers ([#4936](https://github.com/kopia/kopia/issues/4936)) by Julio Lopez
* improve randRead helper ([#4934](https://github.com/kopia/kopia/issues/4934)) by Julio Lopez
* index.maxContentLengths ([#4932](https://github.com/kopia/kopia/issues/4932)) by Julio Lopez
* simplify function and generics signatures ([#4930](https://github.com/kopia/kopia/issues/4930)) by Julio Lopez
* lastSettledEpochNumber() he
_[Truncated at 4000 characters — full notes: https://github.com/kopia/kopia/releases/tag/v0.22.0]_
### v0.21.1
- Date: 2025-07-22
- Version: v0.21.1
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.21.1
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.21.1
- Labels: Platforms: Desktop
###### Server
* fixed scheduling bug ([#4732](https://github.com/kopia/kopia/issues/4732)) by Jarek Kowalski
###### Storage Providers
* **New Feature** Azure Federated Identity support ([#4728](https://github.com/kopia/kopia/issues/4728)) by Julio Lopez
### v0.21.0
- Date: 2025-07-20
- Version: v0.21.0
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.21.0
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.21.0
- Labels: Platforms: Desktop
###### Command-Line Interface
* **New Feature** human-readable sizes for kopia ls ([#4696](https://github.com/kopia/kopia/issues/4696)) by Kian Kasad
* **New Feature** add --disable-file-logging to suppress log file output ([#4686](https://github.com/kopia/kopia/issues/4686)) by Leonardo Cecchi
* fix path printed by "kopia snapshot fix" commands ([#4638](https://github.com/kopia/kopia/issues/4638)) by Kian Kasad
###### General Improvements
* cleanup clock bounds check ([#4720](https://github.com/kopia/kopia/issues/4720)) by Julio Lopez
* **New Feature** check for clock skew on write session creation ([#4719](https://github.com/kopia/kopia/issues/4719)) by Julio Lopez
* rename variable to `humanReadable` for consistency ([#4709](https://github.com/kopia/kopia/issues/4709)) by Julio Lopez
* use require to cleanup snapshot tests ([#4708](https://github.com/kopia/kopia/issues/4708)) by Julio Lopez
* add {peta,exa}byte prefixes ([#4707](https://github.com/kopia/kopia/issues/4707)) by Julio Lopez
* use snapshot end time as tie breaker for equal start time ([#4705](https://github.com/kopia/kopia/issues/4705)) by Julio Lopez
* minor cleanups ([#4704](https://github.com/kopia/kopia/issues/4704)) by Julio Lopez
* migrate remnant piece to crypto/hkdf ([#4691](https://github.com/kopia/kopia/issues/4691)) by Julio Lopez
* migrate to `crypto/{hkdf,pbkdf2,sha3}` ([#4678](https://github.com/kopia/kopia/issues/4678)) by Julio Lopez
* small misc. cleanups ([#4666](https://github.com/kopia/kopia/issues/4666)) by Julio Lopez
* typos ([#4659](https://github.com/kopia/kopia/issues/4659)) by Nathan Baulch
* misc cleanups ([#4652](https://github.com/kopia/kopia/issues/4652)) by Julio Lopez
* enable `forcetypeassert` linter ([#4624](https://github.com/kopia/kopia/issues/4624)) by Julio Lopez
* minor cleanups ([#4621](https://github.com/kopia/kopia/issues/4621)) by Julio Lopez
* upload tests ([#4619](https://github.com/kopia/kopia/issues/4619)) by Julio Lopez
* misc cleanups ([#4615](https://github.com/kopia/kopia/issues/4615)) by Julio Lopez
* minor cleanups in snapshot GC ([#4612](https://github.com/kopia/kopia/issues/4612)) by Julio Lopez
* convenience make targets to install tools ([#4616](https://github.com/kopia/kopia/issues/4616)) by Julio Lopez
* s/interface{}/any/ ([#4614](https://github.com/kopia/kopia/issues/4614)) by Julio Lopez
* fix `TestSnapshotNoLeftoverCheckpoints` slowness ([#4611](https://github.com/kopia/kopia/issues/4611)) by Julio Lopez
###### Repository
* create minimal cache.Storage interface ([#4618](https://github.com/kopia/kopia/issues/4618)) by Jarek Kowalski
###### Server
* fix snapshot scheduling in the event of machine goes to sleep ([#4682](https://github.com/kopia/kopia/issues/4682)) by Jarek Kowalski
###### Snapshots
* **New Feature** Add periodic JSON progress output to snapshot verify ([#4645](https://github.com/kopia/kopia/issues/4645)) by Nick
* completely ignore unsupported entries instead of reporting them as ignored errors to avoid snapshot warnings ([#4613](https://github.com/kopia/kopia/issues/4613)) by Jarek Kowalski
###### Storage Providers
* Azure client cert env var ([#4726](https://github.com/kopia/kopia/issues/4726)) by Julio Lopez
* rename `Options.ClientCertificate` for clarity ([#4724](https://github.com/kopia/kopia/issues/4724)) by Julio Lopez
* add omitempty JSON tags in azure.Options ([#4721](https://github.com/kopia/kopia/issues/4721)) by Julio Lopez
* add tags in azure.Options ([#4716](https://github.com/kopia/kopia/issues/4716)) by Julio Lopez
###### CI/CD
* upgrade to Go 1.24 ([#4675](https://github.com/kopia/kopia/issues/4675)) by Julio Lopez
* pin actions ([#4657](https://github.com/kopia/kopia/issues/4657)) by Julio Lopez
* upgrade Go toolchain to 1.23.10 ([#4656](https://github.com/kopia/kopia/issues/4656)) by Julio Lopez
* include date-time in temp dir name used for tests ([#4651](https://github.com/kopia/kopia/issues/4651)) by Julio Lopez
###### Grap
_[Truncated at 4000 characters — full notes: https://github.com/kopia/kopia/releases/tag/v0.21.0]_
### v0.20.1
- Date: 2025-05-26
- Version: v0.20.1
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.20.1
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.20.1
- Labels: Platforms: Desktop
###### Command-Line Interface
* minor cleanups in diff tests ([#4594](https://github.com/kopia/kopia/issues/4594)) by Julio Lopez
###### Server
* fixed server-based notifications ([#4598](https://github.com/kopia/kopia/issues/4598)) by Jarek Kowalski
###### Snapshots
* fixed snapshotting of \\server\share ([#4603](https://github.com/kopia/kopia/issues/4603)) by Jarek Kowalski
* Remove checkpoints after a complete snapshot ([#4439](https://github.com/kopia/kopia/issues/4439)) by shniubobo
###### Notifications
* fixed notification severities on snapshot creation ([#4604](https://github.com/kopia/kopia/issues/4604)) by Jarek Kowalski
###### CI/CD
* enforce consistent formatting of KopiaUI code ([#4586](https://github.com/kopia/kopia/issues/4586)) by Jarek Kowalski
###### Graphical User Interface
* reformat code to 120 characters per line ([#338](https://github.com/kopia/htmlui/issues/338)) by Jarek Kowalski
* fixed 'Set Policy' button ([#337](https://github.com/kopia/htmlui/issues/337)) by Jarek Kowalski
* SMTP credentials should not be required ([#336](https://github.com/kopia/htmlui/issues/336)) by Jarek Kowalski
* ignore exceptions when making incremental changes to the policy ([#335](https://github.com/kopia/htmlui/issues/335)) by Jarek Kowalski
* report code coverage ([#334](https://github.com/kopia/htmlui/issues/334)) by Jarek Kowalski
* globally apply prettier formatting ([#333](https://github.com/kopia/htmlui/issues/333)) by Jarek Kowalski
### v0.20.0
- Date: 2025-05-20
- Version: v0.20.0
- Original notes: https://github.com/kopia/kopia/releases/tag/v0.20.0
- Permalink: https://whatsnew.fyi/product/kopia/releases/v0.20.0
- Labels: Platforms: Desktop
###### Command-Line Interface
* **New Feature** helper functions to get preceding snapshots for `diff` ([#4559](https://github.com/kopia/kopia/issues/4559)) by Rohit-BM18
* Fix crash when doing `kopia policy show ` ([#4560](https://github.com/kopia/kopia/issues/4560)) by Donatas Abraitis
* rename function to setListBlobsParallelismFromFlags ([#4564](https://github.com/kopia/kopia/issues/4564)) by Julio Lopez
* **New Feature** --stats-only flag for the diff command ([#4557](https://github.com/kopia/kopia/issues/4557)) by Rohit-BM18
* add flag for rclone's startup timeout ([#4543](https://github.com/kopia/kopia/issues/4543)) by Julio Lopez
* cleanup `cli.repositoryAccessMode` ([#4541](https://github.com/kopia/kopia/issues/4541)) by Julio Lopez
* clarify documentation regarding per-user and per-host ([#4512](https://github.com/kopia/kopia/issues/4512)) by blenderfreaky
* create cache marker in log directories ([#4517](https://github.com/kopia/kopia/issues/4517)) by Julio López
* set build info version and info when not set ([#4498](https://github.com/kopia/kopia/issues/4498)) by Julio López
* misc cleanups in internal/diff ([#4484](https://github.com/kopia/kopia/issues/4484)) by Julio López
* add details to persistent password error message ([#4480](https://github.com/kopia/kopia/issues/4480)) by Julio López
* add newline after policy export output ([#4476](https://github.com/kopia/kopia/issues/4476)) by Julio López
* **New Feature** compute snapshot diff stats ([#4444](https://github.com/kopia/kopia/issues/4444)) by Rohit-BM18
* diff test ([#4422](https://github.com/kopia/kopia/issues/4422)) by Julio López
###### KopiaUI App
* adjust handling of default repository ([#4561](https://github.com/kopia/kopia/issues/4561)) by remigius42
###### General Improvements
* cleanup `forbidigo` linter config ([#4540](https://github.com/kopia/kopia/issues/4540)) by Julio Lopez
* cleanup linter config ([#4538](https://github.com/kopia/kopia/issues/4538)) by Julio Lopez
* avoid removing error cause ([#4536](https://github.com/kopia/kopia/issues/4536)) by Julio Lopez
* enable wsl for all go files ([#4524](https://github.com/kopia/kopia/issues/4524)) by Matthieu MOREL
* cleanup a few tests ([#4519](https://github.com/kopia/kopia/issues/4519)) by Julio Lopez
* leverage `os.CreateTemp` ([#4513](https://github.com/kopia/kopia/issues/4513)) by Julio López
* minor cleanups and other nits ([#4507](https://github.com/kopia/kopia/issues/4507)) by Julio López
* `tempfile.Create` on Linux (x64/arm64) ([#4504](https://github.com/kopia/kopia/issues/4504)) by Julio López
* use correct error in call to errors.Wrap ([#4477](https://github.com/kopia/kopia/issues/4477)) by alingse
* prevent infinite loop while resolving ignore file symlinks ([#4413](https://github.com/kopia/kopia/issues/4413)) by Julio López
###### Repository
* **New Feature** role assumption for S3 storage ([#4182](https://github.com/kopia/kopia/issues/4182)) by ashmrtn
###### Server
* add empty line between headers and body in email payload ([#4545](https://github.com/kopia/kopia/issues/4545)) by Julio Lopez
* prevent maintenance task on read-only repos ([#4408](https://github.com/kopia/kopia/issues/4408)) by Julio López
###### Snapshots
* extracted snapshot.FindPreviousManifests() ([#4453](https://github.com/kopia/kopia/issues/4453)) by Jarek Kowalski
* refactored uploader into separate package ([#4450](https://github.com/kopia/kopia/issues/4450)) by Jarek Kowalski
###### Storage Providers
* human-friendly persistence of role durantion ([#4546](https://github.com/kopia/kopia/issues/4546)) by Julio Lopez
* **New Feature** Azure Blob client certificate authentication ([#4535](https://github.com/kopia/kopia/issues/4535)) by Julio Lopez
###### CI/CD
* fix HTMLUI changelog ([#4579](https://github.com/kopia/kopia/issues/4579)) by Jarek Kowalski
* auto-generate clean htmlui changelog ([#4578](https://github.com/kopia/kopia/issues/4578)) by Jarek Kowalski
* u
_[Truncated at 4000 characters — full notes: https://github.com/kopia/kopia/releases/tag/v0.20.0]_