Commit Graph

601 Commits

Author SHA1 Message Date
Nico
283de054ec feat(authentication): api key (#966)
* feat(authentication): api key

Keeps selected UX pieces from b487b096.

Co-authored-by: Nguyen Quy Hy <nguyenquyhy@live.com.sg>

* refactor: pr feedbacks

* chore: bump @better-auth/api-key

* refactor: global limit of 50 api key instead of 10 per org

---------

Co-authored-by: Nguyen Quy Hy <nguyenquyhy@live.com.sg>
2026-06-12 20:14:21 +02:00
renovate[bot]
bd46bd1156 fix(deps): update bun minor and patch dependencies (#937)
* fix(deps): update bun minor and patch dependencies

* fix: require SSO flow for SSO org invitations

Manual enforcement since better-auth made the rule wider

* chore: re-generate api-client

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-06-12 08:50:56 +02:00
iven
aed2c15709 Rename docker-compose.yml to compose.yaml (#935)
Aligns the project with the current Compose Specification, which
designates compose.yaml as the canonical filename and treats the
docker-compose.yml name as a legacy fallback.

Renames every compose file in the repo (the root dev/e2e stack, the
deployment examples under examples/, and the integration-test infra
stack) and updates all documentation, the integration test runner, the
capability hint messages, and the .gitattributes pattern accordingly.
No top-level version field was present to remove.

Functional behavior is unchanged: docker compose discovers either
filename, so existing deployments are not affected by the rename.

Reference: https://docs.docker.com/compose/intro/compose-application-model/
2026-06-10 20:04:00 +02:00
Raj Dave
e6a5d04a5e Add range selection functionality to repository page (#843)
* Add range selection functionality to repository page

* Fix two issues identified by coderabbit

* fix one more coderabbit identified issue

* Add initial selection, and deselection functionality

* small fix

---------

Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-06-10 19:51:25 +02:00
Nico
fd48ff9ce9 fix(backups): reduce low-cpu backup UI contention (#963)
* fix(backups): reduce low-cpu backup UI contention

* chore: remove un-used import

* refactor: start polling for backup updates on start event

* fix: skip ionice automatically if it fails to schedule
2026-06-10 19:36:56 +02:00
Nico
d0b6844435 fix(backups): skip warning messages on exit code 0 (#965) 2026-06-10 18:33:52 +02:00
Nicolas Meienberger
3953ed87db chore: improve wording around recovery key download 2026-06-10 17:52:40 +02:00
Nicolas Meienberger
f4a9dcf677 refactor(progress-buffer): persist first event immediately 2026-06-08 19:22:35 +02:00
Nico
5dabe9dec5 refactor: buffer backup / restore progress (#956) 2026-06-08 17:36:20 +02:00
Nicolas Meienberger
a2e621345a refactor(sso): when verifying an invitation must complete SSO flow 2026-06-07 15:08:20 +02:00
Nicolas Meienberger
9437cdc821 feat(sso): display pending org invitations in user settings page 2026-06-07 14:07:01 +02:00
Nico
53dcd086ef fix(sso) auto linking local account (#953)
* fix(sso): allow invited local accounts to auto-link via SSO

* test(e2e): sso existing member auto linking
2026-06-07 11:46:02 +02:00
Nicolas Meienberger
2b9097a593 refactor: exclude restic cache from backups by default 2026-06-07 10:53:44 +02:00
Nico
7c1f0c52d5 refactor(repo-mutex): use effect.ts (#950)
* refactor(repo-mutex): use effect.ts

* refactor(mutext): run with signal to preserve abort reason
2026-06-06 15:06:26 +02:00
Nico
2318b6bdd0 fix: limit concurrent ls to 2 in flight calls (#948)
* fix: limit concurrent ls to 2 in flight calls

* refactor: get shared lock after semaphore take
2026-06-05 18:07:59 +02:00
Nico
68002b0308 fix: disable add passkey in insecure contexts (#943) 2026-06-04 21:06:48 +02:00
Nicolas Meienberger
9d63f7cb2d Revert "fix(volumes): decrypt values before testing connection (#939)"
This reverts commit 885ea10f2a.
2026-06-03 19:56:55 +02:00
Nicolas Meienberger
4a4e5c0abe ci: skip nfs container entirely in github ci 2026-06-03 19:26:45 +02:00
Nico
885ea10f2a fix(volumes): decrypt values before testing connection (#939)
* fix(volumes): decrypt values before testing connection

* chore: lint issue
2026-06-03 19:05:39 +02:00
Nico
333c11986d feat: enforce protocol version between agent and controller (#938)
* feat: enforce protocol version between agent and controller

* chore: add logging for protocol rejected message
2026-06-03 18:29:36 +02:00
Nicolas Meienberger
be3182793d fix(agent-backups): validate agent ownership 2026-06-03 17:28:43 +02:00
renovate[bot]
755cbe4dae fix(deps): update bun minor and patch dependencies (#925)
* fix(deps): update bun minor and patch dependencies

* chore: fix linting issues

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-06-03 17:15:53 +02:00
Nicolas Meienberger
111a5843ef refactor: reject all non uv passkeys 2026-06-03 17:03:00 +02:00
Nicolas Meienberger
ca325a01c5 chore: re-generate openapi client 2026-06-02 21:04:04 +02:00
Nicolas Meienberger
1526e3d441 test: automate NFS integration 2026-06-02 20:36:33 +02:00
Nicolas Meienberger
dfd787c8ae test(integration): skip volume mounting in CI 2026-06-02 20:26:50 +02:00
Nico
a488bbc754 fix: block login for 2fa users with un-verified passkeys (#934)
* fix: block login for 2fa users with un-verified passkeys

* refactor(passkey): show proper login error

* refactor: show passkey generic error on all failures
2026-06-02 19:48:40 +02:00
Nicolas Meienberger
ce23bded90 test: automate SMB integration 2026-06-02 19:45:17 +02:00
Nicolas Meienberger
036382d82d test: automate webdav integration 2026-06-02 17:30:49 +02:00
Nicolas Meienberger
756ecbddcd test: automate SFTP integration coverage 2026-06-02 17:25:10 +02:00
Nico
648ccae5fc test(integration): s3 repository with rustfs & rclone (#933)
* test(integration): s3 repository with rustfs

* ci: run integration tests before release

* chore: fix linting issue

* ci: persist-creds -> false
2026-06-01 21:37:12 +02:00
Nico
d479bfaddc feat: snapshot restores through rpc (#930)
* feat: snapshot restores through rpc

* fix(restore): do not wait for lock before returning response

* chore: fix liniting issue
2026-05-31 21:48:32 +02:00
Nico
8fedeef4d1 feat: add restore agent RPC foundation (#929)
* feat: add restore agent RPC foundation

* chore: temp event handlers

* refactor: export restore progress from dto file
2026-05-31 19:39:20 +02:00
Nico
2d877cee5a feat: durable tasks (#927) 2026-05-30 16:54:49 +02:00
Nico
0a2c6bca0c refactor(restic): auto try to unlock and remove stale locks (#926) 2026-05-30 13:21:22 +02:00
Nico
d4436b0cdc refactor(restic): all commands return effects (#924)
* refactor(restic): all commands are effects

* fix(restic): preserve effect failure errors

* chore: pr feedbacks
2026-05-30 10:10:54 +02:00
Nico
7b5c53bb7d fix(sftp): allow legacy ssh rsa to add support for older servers (#921)
* refactor(e2e): use more stable assertion

* feat(sftp): add legacy ssh-rsa option
2026-05-27 21:19:23 +02:00
Nicolas Meienberger
4ea9f34154 chore: portless setup 2026-05-27 17:14:34 +02:00
Nico
e4898b97ea fix(2fa): add missing 2fa column (#917) 2026-05-22 20:09:30 +02:00
Nico
98338e80c3 Add passkey authentication support (#845)
* feat(auth): add passkey authentication support

* fix: implement AI review feedback

* fix: use non-unique index for passkey_credentialID_idx in migration

* refactor(passkeys): use TanStack mutations for passkey CRUD operations

* chore: restore lockfile from main and add @better-auth/passkey

* chore: fix conflicts

* refactor(passkey-login): simplify passkey autofill event

* refactor(settings-passkeys): ux improvements

---------

Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-05-21 21:18:46 +02:00
Nico
273408cdb8 fix(shutdown): keep the current volume status after shutdown cleanup (#906) 2026-05-20 15:04:48 +02:00
renovate[bot]
970a7fa42f fix(deps): update dependency content-disposition to v2 (#880)
* fix(deps): update dependency content-disposition to v2

* refactor(content-disposition): use new named export

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-05-19 21:55:43 +02:00
renovate[bot]
575e01cab9 chore(deps): update dependency bun to v1.3.14 (#885)
* chore(deps): update dependency bun to v1.3.14

* chore: update bun base docker image

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-05-19 21:28:46 +02:00
Nico
4dcafa0708 feat(auth): allow skipping forced recovery key download (#900)
* feat(auth): allow skipping forced recovery key download

* refactor: move from session storage to cookie
2026-05-19 20:36:45 +02:00
Nico
c071596151 fix(system): block recovery key download without credential password (#899) 2026-05-19 20:28:09 +02:00
Nico
4b66ad73a7 fix(auth): verify reauth passwords against credential account (#898) 2026-05-19 20:20:55 +02:00
Nico
3b9f2086ee fix(backups): preserve retry settings when toggling schedules (#896) 2026-05-19 20:08:05 +02:00
Nico
94f6d0529f refactor(mutext): persist repository locks in database (#895)
* refactor(mutext): persist repository locks in database

* fix: clean up promoted repository lock on queued abort

* fix: throttle repository lock cleanup during polling
2026-05-19 18:59:40 +02:00
Nicolas Meienberger
b292f94186 refactor(crypto): reject encrypted values from another secret in sealSecret 2026-05-18 22:00:21 +02:00
Nicolas Meienberger
66ebc249ca fix: force recovery key redownload after possible truncated download 2026-05-18 21:35:53 +02:00