GitHub

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 SafeLongFilename to ospath (#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

  • tweak copilot instructions (#5278) by Julio López
  • update agent instructions (#5153) by Julio López

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

Defect Fixes

  • Fixes regression in dependency used for compression (#5049)

Snapshots

  • New Feature localfs support for passing options (#5044) by Jarek Kowalski

CI/CD

  • Remove ineffective omitempty tags (#5037) by Julio López

v0.22.2

Storage Providers

  • Fix regression #5039: execute rclone with non-cancelling context (#5040) by Julio López

Testing

  • allow S3 versioned tests cleanup to succeed (#5038) by Julio López

CI/CD

  • make PR title options consistent with chlog (#5036) by Julio López

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 purpose a string parameter (#5015) by Julio López

Testing Improvements

  • leverage testing.T.Context in 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

  • enable noctx linter (#4972) by Nathan Baulch
  • prevent writing outside of installation target directory (#5003) by Julio López

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.CountSum in 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
  • omitzero JSON 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 verify functionality to the content package (#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.TestUserAgent more 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

Server

  • fixed scheduling bug (#4732) by Jarek Kowalski

Storage Providers

  • New Feature Azure Federated Identity support (#4728) by Julio Lopez

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 humanReadable for 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 forcetypeassert linter (#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 TestSnapshotNoLeftoverCheckpoints slowness (#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.ClientCertificate for 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 forbidigo linter 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.Create on 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 ctx parameters (#4530) by Julio Lopez
  • replace multierr with errors.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

Read the original on github.com ↗