v0.23.1
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 #5371
Repository
- Basic tests for getting epoch manager blob set (#5418) by Julio López
- selection of next epoch to compact (#5373) by Julio López
Storage Providers
- no_extra_providers build tag (#5375) by Julio López
Linter
- annotations for other platforms (#5413) by Julio López
Graphical User Interface
v0.23.0
Command-Line Interface
- [BREAKING CHANGE] restrict insecure unauthenticated server to loopback binds (#5354) by Jarek Kowalski
- registration mechanism for storage providers (#5350) by Julio López
- hash benchmarking count (#5312) by Julio López
- leverage x/term.IsTerminal (#5308) by Julio López
- handle potential conversion overflow when setting progress default (#5271) by Julio López
KopiaUI App
- skip htmlui tests that are timing out (#5257) by Julio López
General Improvements
- bigmapbench profiling (#5321) by Julio López
- clean nits (#5313) by Julio López
- remove support for LZ4 (#5296) by Julio López
- retained log size double counting (#5302) by Julio López
- make counters and size stats uint64 for consistency (#5262) by Julio López
- address potential conversion overflows (#5266) by Julio López
- string nits (#5265) by Julio López
- cleanup nits (#5236) by Julio López
- do not included concatenated entries in log (#5231) by lif
- move
SafeLongFilenametoospath(#5227) by Julio López - add byte units to maintenance stat summaries (#5178) by Julio López
Repository
- sync index blob file before closing (#5292) by Julio López
- failures when exceeding Windows
MAX_PATH(#5226) by Julio López
Snapshots
- ErrorEntry policy resolution to use child policy (#5234) by Baixiaochun
- inaccessible entry causes parent directory to be skipped (#5217) by Julio López
Storage Providers
- warn messages for extra storage providers (#5324) by Julio López
- perform maximum of 2 attempt in
PutBlobInPath(#5168) by Julio López - require.NoError (#5166) by Julio López
- update injected error message (#5165) by Julio López
- make tests with injected errors more robust (#5164) by Julio López
- cleanup temporary file on put blob failure (#5157) by Julio López
- notify after releasing the lock (#5154) by Julio López
- sync file in FS provider to ensure data is persisted (#5150) by Julio López
Testing
- prefer assert.NoError (#5299) by Julio López
- nits in TestSnapFail tests (#5228) by Julio López
TestSnapshotFail* (#5225) by Julio López
Infrastructure
CI/CD
- split out linux-based lint targets (#5349) by ashmrtn
- license-check-go make target (#5347) by Julio López
- skip setup step on PRs on MacOS (#5344) by Julio López
- generate govulncheck SARIF report (#5300) by Julio López
- avoid duplicate test failure output (#5222) by Julio López
- add install-checklocks convenience target (#5152) by Julio López
Graphical User Interface
v0.22.3
v0.22.2
v0.22.1
Graphical User Interface
- Fix issue showing an empty UI for some users (#5006, #5029,#5034,#5035) by Jarek Kowalski and Julio López.
Other Improvements
- make
purposeastringparameter (#5015) by Julio López
Testing Improvements
- leverage
testing.T.Contextin testlogging (#5008) by Julio López - use contexts in tests (#5009) by Julio López
- pass context in helpers for running Docker (#5012) by Julio López
- cleanup
TestKopiaRunner(#5010) by Julio López
CI/CD
v0.22.0
Command-Line Interface
- potential overflow in integer conversion (#4993) by Julio Lopez
- make --progress flag visible and use it in sync-to command (#3542) (#4877) by yinheli
- ensure auto-maintenance errors are propagated (#4851) by Julio Lopez
- enable quick maintenance by default on repo creation (#4840) by Julio Lopez
- New Feature extend stats for content verification (#4830) by Julio Lopez
- additional safeguard dangerous commands (#4767) by Julio Lopez
- deprecate dangerous repo repair sub-command (#4766) by Julio Lopez
- reword message for dangerous commands (#4765) by Julio Lopez
- remove deprecated no-op flags (#4764) by Julio Lopez
General Improvements
- handle errors closing writable descriptors (#4998) by Julio Lopez
- avoid wrapping always-nil error (#4997) by Julio Lopez
- check for nil before de-refencing field (#4996) by Julio Lopez
- check bounds for memory allocation (#4995) by Julio Lopez
- fix typos (#4986) by Julio Lopez
- New Feature fix display errors for maintenance stats (#4984) by lyndon-li
- omitzero JSON tag in policy structs (#4910) by Julio Lopez
- New Feature add stats to maintenance run - SnapshotGC (#4964) by lyndon-li
- leverage
stats.CountSumin maintenance stats (#4963) by Julio Lopez - remove dry run option for blob retention ext (#4962) by Julio Lopez
- maintenance stats for rewrite contents phase (#4961) by lyndon-li
extendBlobRetentionTime(#4960) by Julio Lopez- New Feature maintenance stats for clean up logs phase (#4959) by lyndon-li
- consistent use "pack" where possible (#4952) by Julio Lopez
- fix field names in ExtendBlobRetentionStats (#4958) by Julio Lopez
- New Feature maintenance stats for delete unreferenced packs phase (#4955) by lyndon-li
- New Feature maintenance stats for drop deleted contents and compact indexes (#4948) by lyndon-li
- fix field names in CompactSingleEpochStats (#4947) by Julio Lopez
- use explicit return values (#4940) by Julio Lopez
- New Feature add stats to maintenance run - AdvanceEpoch (#4937) by lyndon-li
- diskCommitedContentIndexCache (#4939) by Julio Lopez
- buildinfo helpers (#4936) by Julio Lopez
- improve randRead helper (#4934) by Julio Lopez
- index.maxContentLengths (#4932) by Julio Lopez
- simplify function and generics signatures (#4930) by Julio Lopez
- lastSettledEpochNumber() helper (#4927) by Julio Lopez
- fix return value order to match return names (#4926) by Julio Lopez
- rename GenerateRangeCheckpointStats fields (#4925) by Julio Lopez
- New Feature add maintenance phase stats - CleanupSupersededIndexes (#4916) by lyndon-li
- field and variable names (#4911) by Julio Lopez
- New Feature add stats to maintenance run - CleanupMarkers (#4900) by lyndon-li
- simplify construction of error messages (#4913) by Julio Lopez
omitzeroJSON tag (#4907) by Julio Lopez- leverage maps.Clone (#4905) by Julio Lopez
- modernize bloop (#4904) by Julio Lopez
- modernize (#4903) by Julio Lopez
- modernize min/max (#4898) by Julio Lopez
- New Feature reduce number of open file descriptors for indexes on Unix (#4866) by Samuel Maynard
- address linter warnings (#4897) by Julio Lopez
- New Feature interfaces and structures for maintenance stats (#4890) by lyndon-li
- expand triggers for endurance tests (#4860) by Julio Lopez
- fix endurance test failures (#4859) by Julio Lopez
- remove unused pproflogging package (#4850) by Julio Lopez
- cleanup observabilityFlags (#4852) by Julio Lopez
- New Feature rewrote content logs to always be JSON-based and reorganized log structure (#4822) by Jarek Kowalski
- increase number of retained maintenance run info (#4846) by Julio Lopez
- set packID when creating the map entry (#4843) by Julio Lopez
- minor cleanups (#4842) by Julio Lopez
- stop background workers when test fails (#4841) by Julio Lopez
- New Feature content-to-pack consistency checks in maintenance (#4832) by Julio Lopez
- move
content verifyfunctionality to thecontentpackage (#4827) by Julio Lopez - use testify in
content_formatter_test.go(#4775) by Julio Lopez - cleanup VSS trailer handling (#4776) by Julio Lopez
- miscellaneous cleanups (#4774) by Julio Lopez
Snapshots
- New Feature Flush after restoring each file (#4825) by lyndon-li
- Append path separator to Shadow Copy root directory on Windows (#3891) by Hakkin Lain
Storage Providers
- make
azure.TestUserAgentmore robust (#4781) by Julio Lopez - fix azure.TestUserAgent (#4780) by Julio Lopez
CI/CD
- remove
GOEXPERIMENT=coverageredesign(#4988) by Julio Lopez - make socket activation test more robust (#4985) by Julio Lopez
- build kopia with
-trimpath(#4983) by Julio Lopez - enable
wsl_v5:{assign,expr}linter settings (#4982) by Julio Lopez - enable wsl_v5:err linter (#4928) by Julio Lopez
- enable modernize:omitzero linter setting (#4981) by Julio Lopez
- require Go 1.24 to build site (#4980) by Julio Lopez
- upgrade to golangci-lint 2.6.1 (#4973) by Nathan Baulch
- enable wsl_v5:return linter (#4975) by Julio Lopez
- upgrade to golangci-lint v2.5.0 (#4931) by Nathan Baulch
- update copilot instructions for reviews (#4935) by Julio Lopez
- add copilot instructions (#4933) by Julio Lopez
- add linter config for
gofumpt(#4929) by Julio Lopez - run endurance test every 6 hours (#4861) by Julio Lopez
- cleanup parameters for
actions/setup-go(#4813) by Julio Lopez - upgrade Go toolchain to 1.24.7 (#4807) by Julio Lopez
Graphical User Interface
- fix failing test (#384) by Jarek Kowalski
v0.21.1
v0.21.0
Command-Line Interface
- New Feature human-readable sizes for kopia ls (#4696) by Kian Kasad
- New Feature add --disable-file-logging to suppress log file output (#4686) by Leonardo Cecchi
- fix path printed by "kopia snapshot fix" commands (#4638) by Kian Kasad
General Improvements
- cleanup clock bounds check (#4720) by Julio Lopez
- New Feature check for clock skew on write session creation (#4719) by Julio Lopez
- rename variable to
humanReadablefor consistency (#4709) by Julio Lopez - use require to cleanup snapshot tests (#4708) by Julio Lopez
- add {peta,exa}byte prefixes (#4707) by Julio Lopez
- use snapshot end time as tie breaker for equal start time (#4705) by Julio Lopez
- minor cleanups (#4704) by Julio Lopez
- migrate remnant piece to crypto/hkdf (#4691) by Julio Lopez
- migrate to
crypto/{hkdf,pbkdf2,sha3}(#4678) by Julio Lopez - small misc. cleanups (#4666) by Julio Lopez
- typos (#4659) by Nathan Baulch
- misc cleanups (#4652) by Julio Lopez
- enable
forcetypeassertlinter (#4624) by Julio Lopez - minor cleanups (#4621) by Julio Lopez
- upload tests (#4619) by Julio Lopez
- misc cleanups (#4615) by Julio Lopez
- minor cleanups in snapshot GC (#4612) by Julio Lopez
- convenience make targets to install tools (#4616) by Julio Lopez
- s/interface{}/any/ (#4614) by Julio Lopez
- fix
TestSnapshotNoLeftoverCheckpointsslowness (#4611) by Julio Lopez
Repository
- create minimal cache.Storage interface (#4618) by Jarek Kowalski
Server
- fix snapshot scheduling in the event of machine goes to sleep (#4682) by Jarek Kowalski
Snapshots
- New Feature Add periodic JSON progress output to snapshot verify (#4645) by Nick
- completely ignore unsupported entries instead of reporting them as ignored errors to avoid snapshot warnings (#4613) by Jarek Kowalski
Storage Providers
- Azure client cert env var (#4726) by Julio Lopez
- rename
Options.ClientCertificatefor clarity (#4724) by Julio Lopez - add omitempty JSON tags in azure.Options (#4721) by Julio Lopez
- add tags in azure.Options (#4716) by Julio Lopez
CI/CD
- upgrade to Go 1.24 (#4675) by Julio Lopez
- pin actions (#4657) by Julio Lopez
- upgrade Go toolchain to 1.23.10 (#4656) by Julio Lopez
- include date-time in temp dir name used for tests (#4651) by Julio Lopez
Graphical User Interface
- extracted formatting utilities to separate module (#370) by Jarek Kowalski
- moved policy utils to a separate module (#367) by Jarek Kowalski
- component refactoring (#365) by Jarek Kowalski
- fixed warnings during 'npm test' (#345) by Jarek Kowalski
- reorganized test utilities (#369) by Jarek Kowalski
- speed up tests that use polling with long intervals (#368) by Jarek Kowalski
- refactored router mock setup (#366) by Jarek Kowalski
- move cancelTask to a separate module (#364) by Jarek Kowalski
- added test for top-level index.jsx (#363) by Jarek Kowalski
- added tests for the App component (#362) by Jarek Kowalski
- added tests for Policies page (#361) by Jarek Kowalski
- added tests for DirectoryItems (#360) by Jarek Kowalski
- added tests for DirectoryBreadcrums (#359) by Jarek Kowalski
- added tests for SnapshotCreate component (#358) by Jarek Kowalski
- added tests for SnapshotDirectory component (#357) by Jarek Kowalski
- added forms test (#351) by Jarek Kowalski
- more test coverage (#350) by Jarek Kowalski
- added tests for the Logs component (#349) by Jarek Kowalski
- add tests for Snapshots tab (#348) by Jarek Kowalski
- added tests for the Repository tab (#347) by Jarek Kowalski
- added tests for Tasks (#346) by Jarek Kowalski
- added tests for TimesOfDayTest component (#344) by Jarek Kowalski
- added tests for snapshot estimation (#343) by Jarek Kowalski
- increased coverage for NotificationEditor.jsx (#342) by Jarek Kowalski
- added tests for remaining repository setup pages (#341) by Jarek Kowalski
- increase code coverage (#340) by Jarek Kowalski
- moved tests to tests/ directory and reorganized by their target (#339) by Jarek Kowalski
v0.20.1
Command-Line Interface
- minor cleanups in diff tests (#4594) by Julio Lopez
Server
- fixed server-based notifications (#4598) by Jarek Kowalski
Snapshots
- fixed snapshotting of \server\share (#4603) by Jarek Kowalski
- Remove checkpoints after a complete snapshot (#4439) by shniubobo
Notifications
- fixed notification severities on snapshot creation (#4604) by Jarek Kowalski
CI/CD
- enforce consistent formatting of KopiaUI code (#4586) by Jarek Kowalski
Graphical User Interface
- reformat code to 120 characters per line (#338) by Jarek Kowalski
- fixed 'Set Policy' button (#337) by Jarek Kowalski
- SMTP credentials should not be required (#336) by Jarek Kowalski
- ignore exceptions when making incremental changes to the policy (#335) by Jarek Kowalski
- report code coverage (#334) by Jarek Kowalski
- globally apply prettier formatting (#333) by Jarek Kowalski
v0.20.0
Command-Line Interface
- New Feature helper functions to get preceding snapshots for
diff(#4559) by Rohit-BM18 - Fix crash when doing
kopia policy show <path>(#4560) by Donatas Abraitis - rename function to setListBlobsParallelismFromFlags (#4564) by Julio Lopez
- New Feature --stats-only flag for the diff command (#4557) by Rohit-BM18
- add flag for rclone's startup timeout (#4543) by Julio Lopez
- cleanup
cli.repositoryAccessMode(#4541) by Julio Lopez - clarify documentation regarding per-user and per-host (#4512) by blenderfreaky
- create cache marker in log directories (#4517) by Julio López
- set build info version and info when not set (#4498) by Julio López
- misc cleanups in internal/diff (#4484) by Julio López
- add details to persistent password error message (#4480) by Julio López
- add newline after policy export output (#4476) by Julio López
- New Feature compute snapshot diff stats (#4444) by Rohit-BM18
- diff test (#4422) by Julio López
KopiaUI App
- adjust handling of default repository (#4561) by remigius42
General Improvements
- cleanup
forbidigolinter config (#4540) by Julio Lopez - cleanup linter config (#4538) by Julio Lopez
- avoid removing error cause (#4536) by Julio Lopez
- enable wsl for all go files (#4524) by Matthieu MOREL
- cleanup a few tests (#4519) by Julio Lopez
- leverage
os.CreateTemp(#4513) by Julio López - minor cleanups and other nits (#4507) by Julio López
tempfile.Createon Linux (x64/arm64) (#4504) by Julio López- use correct error in call to errors.Wrap (#4477) by alingse
- prevent infinite loop while resolving ignore file symlinks (#4413) by Julio López
Repository
- New Feature role assumption for S3 storage (#4182) by ashmrtn
Server
- add empty line between headers and body in email payload (#4545) by Julio Lopez
- prevent maintenance task on read-only repos (#4408) by Julio López
Snapshots
- extracted snapshot.FindPreviousManifests() (#4453) by Jarek Kowalski
- refactored uploader into separate package (#4450) by Jarek Kowalski
Storage Providers
- human-friendly persistence of role durantion (#4546) by Julio Lopez
- New Feature Azure Blob client certificate authentication (#4535) by Julio Lopez
CI/CD
- fix HTMLUI changelog (#4579) by Jarek Kowalski
- auto-generate clean htmlui changelog (#4578) by Jarek Kowalski
- upgrade Go toolchain to 1.23.9 (#4568) by Julio Lopez
- remove exclusion for unused
ctxparameters (#4530) by Julio Lopez - replace
multierrwitherrors.Join(#4529) by Julio Lopez - remove gocritic unnecessaryDefer exclusion (#4525) by Matthieu MOREL
- enable exptostd linter (#4509) by Julio López
- utc commit date (#4506) by Julio López
- bump golangci-lint to v2.1.2 (#4500) by Matthieu MOREL
- use GH Linux ARM runners (#4367) by Julio López
- upgrade Go to 1.23 (#4248) by Jarek Kowalski
Graphical User Interface
- New Feature add max file size field to policy editor (#321) by blenderfreaky
- New Feature allow creating per-host, per-user and foreign policies (#320) by blenderfreaky
- Remove misleading asterisk from extension placeholders (#327) by Kian Kasad
- don't require login and password to allow using SMTP instead of upgrading to SMTPs (#313) by anaxita
- reformatted all code using prettier (#330) by Jarek Kowalski
- added eslint (#329) by Jarek Kowalski
- migrate htmlui framework to vite, because CRA is deprecated (#316) by Jarek Kowalski