File kopia.changes of Package kopia
-------------------------------------------------------------------
Thu Jul 24 11:13:19 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.21.1:
* Server
- fixed scheduling bug (#4732) by Jarek Kowalski
* Storage Providers
- New Feature Azure Federated Identity support (#4728) by Julio
Lopez
-------------------------------------------------------------------
Thu Jul 24 11:02:08 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.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
* Dependencies
- build(deps): bump the common-golang-dependencies group with 9
updates (#4718)
- build(deps): bump google.golang.org/api (#4715)
- build(deps): bump github/codeql-action in the github-actions
group (#4701)
- build(deps): bump docker/setup-buildx-action in the docker
group (#4702)
- build(deps): bump dawidd6/action-homebrew-bump-formula from 4
to 5 (#4703)
- build(deps): bump the telemetry-dependencies group with 4
updates (#4699)
- build(deps): bump github.com/mocktools/go-smtp-mock/v2
(#4697)
- build(deps): bump google.golang.org/api (#4698)
- build(deps): bump github.com/chromedp/chromedp from 0.13.6 to
0.13.7 (#4688)
- build(deps): bump github.com/prometheus/common (#4687)
- build(deps): bump the common-golang-dependencies group with 2
updates (#4676)
- build(deps): bump github.com/hanwen/go-fuse/v2 from 2.7.2 to
2.8.0 (#4672)
- build(deps): bump the common-golang-dependencies group with 2
updates (#4671)
- build(deps): bump github/codeql-action in the github-actions
group (#4664)
- build(deps): bump
github.com/Azure/azure-sdk-for-go/sdk/azidentity (#4662)
- build(deps): bump the common-golang-dependencies group with 7
updates (#4660)
- build(deps): bump github.com/mocktools/go-smtp-mock/v2
(#4647)
- build(deps): bump the common-golang-dependencies group with 2
updates (#4646)
- build(deps): bump the telemetry-dependencies group with 4
updates (#4608)
- build(deps): bump the github-actions group with 2 updates
(#4632)
- build(deps): bump codecov/codecov-action from 5.4.2 to 5.4.3
(#4634)
- build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2
(#4633)
- build(deps): bump the common-golang-dependencies group with 2
updates (#4607)
-------------------------------------------------------------------
Mon May 26 04:45:38 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.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
* Dependencies
- build(deps): bump the common-golang-dependencies group with 4
updates (#4582)
- build(deps): bump github.com/prometheus/common (#4583)
-------------------------------------------------------------------
Tue May 20 04:35:24 UTC 2025 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- Update to version 0.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
* Dependencies
- build(deps): bump codecov/codecov-action from 5.2.0 to 5.3.0 (#4366)
- build(deps): bump codecov/codecov-action from 5.3.0 to 5.3.1 (#4387)
- build(deps): bump codecov/codecov-action from 5.3.1 to 5.4.0 (#4434)
- build(deps): bump codecov/codecov-action from 5.4.0 to 5.4.2 (#4549)
- build(deps): bump github.com/chromedp/chromedp from 0.11.0 to 0.12.1 (#4363)
- build(deps): bump github.com/chromedp/chromedp from 0.12.1 to 0.13.0 (#4426)
- build(deps): bump github.com/chromedp/chromedp from 0.13.0 to 0.13.1 (#4443)
- build(deps): bump github.com/chromedp/chromedp from 0.13.1 to 0.13.3 (#4468)
- build(deps): bump github.com/chromedp/chromedp from 0.13.3 to 0.13.6 (#4494)
- build(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.1 to 4.5.2 (#4464)
- build(deps): bump github.com/golang-jwt/jwt/v5 from 5.2.1 to 5.2.2 (#4463)
- build(deps): bump github.com/golang/glog from 1.2.3 to 1.2.4 (#4380)
- build(deps): bump github.com/google/go-cmp from 0.6.0 to 0.7.0 (#4425)
- build(deps): bump github.com/klauspost/compress from 1.17.11 to 1.18.0 (#4427)
- build(deps): bump github.com/pkg/sftp from 1.13.7 to 1.13.8 (#4456)
- build(deps): bump github.com/pkg/sftp from 1.13.8 to 1.13.9 (#4474)
- build(deps): bump github.com/prometheus/client_golang (#4424)
- build(deps): bump github.com/prometheus/client_golang (#4493)
- build(deps): bump github.com/prometheus/client_model (#4503)
- build(deps): bump github.com/prometheus/common (#4458)
- build(deps): bump github.com/sanity-io/litter from 1.5.6 to 1.5.8 (#4417)
- build(deps): bump github.com/tg123/go-htpasswd from 1.2.3 to 1.2.4 (#4516)
- build(deps): bump github/codeql-action in the github-actions group (#4386)
- build(deps): bump google.golang.org/api (#4393)
- build(deps): bump google.golang.org/api (#4437)
- build(deps): bump google.golang.org/grpc (#4365)
- build(deps): bump google.golang.org/grpc from 1.71.1 to 1.72.0 in the common-golang-dependencies group (#4515)
- build(deps): bump google.golang.org/protobuf (#4379)
- build(deps): bump google.golang.org/protobuf (#4469)
- build(deps): bump ossf/scorecard-action from 2.4.0 to 2.4.1 (#4433)
- build(deps): bump the common-golang-dependencies group across 1 directory with 4 updates (#4465)
- build(deps): bump the common-golang-dependencies group with 10 updates (#4441)
- build(deps): bump the common-golang-dependencies group with 10 updates (#4492)
- build(deps): bump the common-golang-dependencies group with 11 updates (#4400)
- build(deps): bump the common-golang-dependencies group with 2 updates (#4502)
- build(deps): bump the common-golang-dependencies group with 2 updates (#4567)
- build(deps): bump the common-golang-dependencies group with 3 updates (#4416)
- build(deps): bump the common-golang-dependencies group with 3 updates (#4473)
- build(deps): bump the common-golang-dependencies group with 4 updates (#4423)
- build(deps): bump the common-golang-dependencies group with 4 updates (#4532)
- build(deps): bump the common-golang-dependencies group with 9 updates (#4558)
- build(deps): bump the docker group with 2 updates (#4432)
- build(deps): bump the github-actions group across 1 directory with 4 updates (#4364)
- build(deps): bump the github-actions group with 2 updates (#4548)
- build(deps): bump the github-actions group with 3 updates (#4431)
- build(deps): bump the github-actions group with 4 updates (#4483)
- build(deps): bump the telemetry-dependencies group with 5 updates (#4442)
- build(deps): remove patch requirement in go.mod (#4411)
- build(deps): updated all dependencies of KopiaUI app (#4580)
- build(deps): upgrade Go toolchain to 1.23.7 and x/net packages (#4438)
- build(deps): use Go 1.23.8 toolchain (#4482)
-------------------------------------------------------------------
Fri Jan 24 06:07:37 UTC 2025 - opensuse_buildservice@ojkastl.de
- Update to version 0.19.0:
* build(deps): bump codecov/codecov-action to 5.2.0 (#4362)
* build(deps): bump docker/setup-qemu-action (#4361)
* build(deps):
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob (#4360)
* fix(server): ensure server uploads "repodiag" blobs (#4358)
* chore(general): reduce verbosity for noisy log message (#4357)
* build(deps): bump google.golang.org/api (#4356)
* build(deps): drop Go patch version to 1.22.0 (#4353)
* build(deps): upgrade grpc and opentelemetry dependencies
(#4354)
* feat(kopiaui): support for desktop notifications (#4352)
* build(deps): bump the telemetry-dependencies group with 4
updates (#4350)
* build(deps): bump the common-golang-dependencies group with 3
updates (#4349)
* test(general): cleanup symlink tests (#4347)
* build(deps): bump github.com/sanity-io/litter from 1.5.5 to
1.5.6 (#4344)
* build(deps): bump github.com/mattn/go-colorable from 0.1.13 to
0.1.14 (#4343)
* build(deps): bump cloud.google.com/go/storage (#4342)
* build(deps): bump github.com/minio/minio-go/v7 from 7.0.82 to
7.0.83 in the common-golang-dependencies group (#4337)
* feat(notifications): tweak snapshot report template (#4338)
* Update command_benchmark_compression.go (#4339)
* build(deps): bump the kopia-ui-npm-dependencies group (#4327)
* build(deps): bump codecov/codecov-action from 5.0.7 to 5.1.2
(#4330)
* build(deps): bump docker/setup-buildx-action in the docker
group (#4329)
* build(deps): bump the github-actions group with 3 updates
(#4328)
* build(deps): bump github.com/studio-b12/gowebdav from 0.9.0 to
0.10.0 (#4315)
* build(deps): bump the common-golang-dependencies group across 1
directory with 8 updates (#4336)
* feat(server): emit notifications as JSON to stderr when running
under KopiaUI (#4322)
* feat(notifications): emit snapshot report notifications in the
UI/server (#4323)
* feat(notifications): improved notification templates (#4321)
* feat(general): misc notifications improvements (#4319)
* build(deps): bump the common-golang-dependencies group with 4
updates (#4314)
* build(deps): bump the telemetry-dependencies group with 4
updates (#4312)
* feat(ui): upgraded htmlui to the latest version (#4317)
* feat(kopiaui): support for AppArmor on Ubuntu 24.04 (#4318)
* build(deps): bump the common-golang-dependencies group with 4
updates (#4311)
* feat(ui): upgraded htmlui to the latest version (#4301)
* feat(ui): upgraded htmlui to the latest version (#4300)
* build(deps): bump the common-golang-dependencies group across 1
directory with 3 updates (#4299)
* build(deps): bump github.com/prometheus/common (#4298)
* build(deps): bump github/codeql-action in the github-actions
group (#4286)
* build(deps): bump github.com/mocktools/go-smtp-mock/v2 (#4277)
* build(deps): bump codecov/codecov-action from 4.6.0 to 5.0.7
(#4287)
* build(deps): bump the kopia-ui-npm-dependencies group (#4288)
* build(deps): bump github.com/hanwen/go-fuse/v2 from 2.6.4 to
2.7.2 (#4291)
* feat(server): only log successful authentication events when
--log-server-requests is enabled (#4296)
* build(deps): bump github.com/minio/minio-go/v7 (#4290)
* build(deps): bump github.com/stretchr/testify from 1.9.0 to
1.10.0 (#4275)
* build(deps): bump google.golang.org/api (#4274)
-------------------------------------------------------------------
Thu Nov 21 07:54:44 UTC 2024 - opensuse_buildservice@ojkastl.de
- Update to version 0.18.2:
* feat(general): JSON marshaler helper for `time.Duration`
(#4194)
* feat(ui): upgraded htmlui to the latest version (#4268)
* feat(snapshots): Fix for #2037 Add symlink support for
.kopiaignore (#4190)
* build(deps): bump github.com/hanwen/go-fuse/v2 from 2.6.3 to
2.6.4 (#4265)
* build(deps): bump github.com/mocktools/go-smtp-mock/v2 (#4264)
* build(deps): bump the common-golang-dependencies group with 4
updates (#4263)
* fix(server): handle unset password hash version in user profile
(#4259)
* fix(notifications): fixed headers for email notifications
(#4258)
-------------------------------------------------------------------
Tue Nov 19 08:28:57 UTC 2024 - opensuse_buildservice@ojkastl.de
- Update to version 0.18.1:
* fix(cli): fixed v0.18.0 failures using v0.17.0-generated config
(#4255)
-------------------------------------------------------------------
Tue Nov 19 08:19:35 UTC 2024 - opensuse_buildservice@ojkastl.de
- Update to version 0.18.0:
There are over 240 changes in this release.
Full list of changes can be found in:
https://github.com/kopia/kopia/compare/v0.17.0...v0.18.0
* Notifications
You can now define notification profiles to be notified
whenever errors occur.
- support for defining notification profiles and templates via
CLI (#4034) by Jarek Kowalski
- send error notifications and snapshot reports (#4233) by
Jarek Kowalski
- improved snapshot reports (#4244) by Jarek Kowalski
- added API to manipulate notification profiles in the UI - not
used yet (#4171) by Jarek Kowalski
* Maintenance
Maintenance and manifest management improvements should make
working with larger repositories somewhat easier.
- run epoch maintenance for quick maintenance (#4185) by Julio
López
- allow running quick maintenance with epoch manager (#4198) by
Julio López
- do not run auto-maintenance after a command fails (#4168) by
Julio López
- Reduce memory usage for epoch index compaction (#4139) by
lyndon-li
- Reduce memory allocations during manifest compaction (#4084)
by ashmrtn
- remove ability to enable compaction on index load (#3834) by
Julio López
- Allow extending blob retentions (#4151) by Mike McKay-Dirden
* Snapshot/Restore
Improvements for snapshot/restore progress reporting.
- introduce adaptive estimation mechanism (#4218) by Eugene
Sumin
- Increase restore progress granularity (#3655) by Eugene Sumin
* Policies
- add policy import/export commands to im-/export policies
from/to json ([#4020]) by blenderfreaky
- added support for per-directory splitter overrides (#3887) by
Jarek Kowalski
- Metadata compression config support for directory and
indirect content (#4080) by Prasad Ghangal
* Server
- BREAKING CHANGE remove support for HTTP-based repository API
(#3745) by Jarek Kowalski
- add server user set-password-hash command (#3974) by Julio
López
- user add set user-password-hashing-algorithm cli option
(#3815) by Sirish Bathina
- Fix client IPv6 URI generation for gRPC connections (#3830)
by Nick
* Providers
- GCS immutability (#4134) by Mike McKay-Dirden
- info about the B2 S3-compatible endpoint (#3860) by Wyatt
Childers
- upgraded rclone to 1.68.2, fixed Google Drive rclone
compatibility (#4249) by Jarek Kowalski
* Other Notable Changes
- cache hard limits flags (#3846) by Wyatt Childers
- avoid memory bloat in benchmark encryption command (#4213) by
Julio López
- include clock skew in error message (#4186) by Julio López
- avoid using empty master keys (#3835) by Mark Severson
- key derivation algorithm for cache encryption (#3799) by
Sirish Bathina
- allow setting key derivation algorithm for format blob
(#3779) by Sirish Bathina
- include parameters in pbkdf2 instantiation (#3811) by Julio
López
- change default number of iterations for PBKDF2 (#3810) by
Julio López
-------------------------------------------------------------------
Mon Jul 15 08:08:35 UTC 2024 - opensuse_buildservice@ojkastl.de
- Update to version 0.17.0:
* build(deps): bump github.com/klauspost/compress from 1.17.7 to 1.17.8 (#3802)
* build(deps): bump github/codeql-action in the github-actions group (#3803)
* build(deps): bump the common-golang-dependencies group with 2 updates (#3801)
* refactor(repository): refactored internal index read API to reduce memory allocations (#3754)
* refactor(general): avoid wrapping known-to-be-nil error (#3797)
* feat(general): User_profile_add_set cli changes (#3770)
* fix(server): fixed deadlock between server and scheduler during shutdown (#3782)
* build(deps-dev): bump tar from 6.2.0 to 6.2.1 in /app (#3794)
* build(deps): bump codecov/codecov-action from 4.1.1 to 4.2.0 (#3792)
* build(deps): bump docker/setup-buildx-action in the docker group (#3791)
-------------------------------------------------------------------
Mon Jul 15 08:06:29 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
- new package kopia: Cross-platform backup tool for Windows, macOS
& Linux with fast, incremental backups, client-side end-to-end
encryption, compression and data deduplication