Commit Graph

313 Commits

Author SHA1 Message Date
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
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
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
3b9f2086ee fix(backups): preserve retry settings when toggling schedules (#896) 2026-05-19 20:08:05 +02:00
Nicolas Meienberger
66ebc249ca fix: force recovery key redownload after possible truncated download 2026-05-18 21:35:53 +02:00
Nicolas Meienberger
419204d587 fix(download-password): revoke url after 60 secs 2026-05-18 21:13:07 +02:00
Nico
19a0781667 test: backend integration (#889)
* test: backend integration

* docs: mounted shares acls

* feat: smb expose real ACLs when available

* fix: re-init repo on setup

* chore: add missing @hono/standard-validator package

* chore: add happy-dom dev dep
2026-05-17 15:18:56 +02:00
Nico
aa7da321ba refactor: dedpulicate volume schemas across packages (#864) 2026-05-09 15:36:25 +02:00
renovate[bot]
5e4742488f fix(deps): update bun minor and patch dependencies (#865)
* fix(deps): update bun minor and patch dependencies

* fix: ci

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-05-07 17:11:53 +02:00
Nicolas Meienberger
1ca1598c58 fix: change dev panel shortcut to D+E+V 2026-05-07 08:17:44 +02:00
Nicolas Meienberger
e981211a2d fix(notifications): validate webhook headers and show delivery health 2026-05-05 10:24:20 +02:00
Nicolas Meienberger
f0ac9fe35c chore: update new issue link to show templates 2026-05-04 17:09:46 +02:00
Nico
f83b765d04 fix(notifications): persist delivery health status (#850)
* fix(notifications): persist delivery health status

* fix: pr feedback double update
2026-05-02 11:51:16 +02:00
Antoine Jeanselme
3d5a0a9b75 feat: add repositories & volumes column sorting (#808)
* Add repository column sorting

* Make status title correctly centered o nsmaller screens

* Add volumes column sorting

* refactor: use tanstack table for filtering and sorting

* feat: make notifications sortable

* chore: pr feedbacks

---------

Co-authored-by: Antoine Jeanselme <67123340+ajeanselme@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-05-02 10:21:42 +02:00
Nico
11e9fbcc44 feat: pre/post backup webhooks (#835)
* feat: pre/post backup webhooks

* fix(hooks): run post when cancelled

* refactor(webhooks): headers as array

* refactor: pr feedback

* refactor: simplify hooks ceremonies

* chore: pr feedbacks

* chore: re-gen migration
2026-04-29 23:48:58 +02:00
Nico
a5d47eac5a fix(system): ensure version check is not cached by browser (#833)
#798
2026-04-25 09:41:29 +02:00
Nicolas Meienberger
c64862f604 refactor: extract shared test fixtures and secret helpers 2026-04-22 22:33:18 +02:00
Nico
26203cca59 chore: remove unused deps (#828) 2026-04-22 22:17:51 +02:00
Nico
6ae5a33acd chore: remove dead files (#827) 2026-04-22 22:13:24 +02:00
Nico
e2c9ef0518 chore: fixed unused types (#824) 2026-04-22 22:04:46 +02:00
Nico
a0c34ee48d chore: cleanup un-used exports (#823) 2026-04-22 21:14:37 +02:00
renovate[bot]
6f0617492b fix(deps): update bun minor and patch dependencies (#795)
* fix(deps): update bun minor and patch dependencies

* chore: update api-client

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-04-16 21:46:05 +02:00
Eric Hess
d2f65716fe feat(mirrors): add selective snapshot sync to mirror repositories (#755)
* feat(mirrors): add selective snapshot sync to mirror repositories

Allow users to sync missing snapshots from the source repository to a
mirror. A new sync button per mirror opens a dialog showing which
snapshots are missing, with checkboxes to select which ones to copy.

- Add GET /:shortId/mirrors/:mirrorShortId/status endpoint to compare
  snapshots between source and mirror repositories
- Add POST /:shortId/mirrors/:mirrorShortId/sync endpoint accepting
  selected snapshotIds in the request body
- Extend restic copy command to accept multiple snapshotIds
- Add sync preview dialog with snapshot selection to the frontend

* refactor: stylistic changes

---------

Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-04-16 21:28:48 +02:00
Nicolas Meienberger
832425025f refactor(backup): move retry delay minutes conversion at the contract level 2026-04-12 11:28:39 +02:00
Nicolas Meienberger
cb22e34215 refactor(backup): default to 2 retries & 15 minutes delay 2026-04-12 10:16:26 +02:00
DerPenz
0476dcebb8 fix(backup): updating new settings correctly in the db 2026-04-12 09:49:35 +02:00
DerPenz
b1cd1a4220 fix(backup): added placeholder in settings 2026-04-12 09:49:35 +02:00
DerPenz
79b7733e1e fix(backup): updated types gen 2026-04-12 09:49:35 +02:00
DerPenz
7e9b1fafa3 feat(backup): added retry policy into job settings 2026-04-12 09:49:35 +02:00
Nico
73ae5c41b5 style: fix misalignment in mirrors ui (#778) 2026-04-11 08:57:46 +02:00
Nico
595a29056d fix(slack): channel is not supported in combination with webhooks (#770)
#766
2026-04-09 22:24:24 +02:00
Nicolas Meienberger
f11e3b7f82 fix(schedule): disable if saving with manual-only mode 2026-04-04 23:23:26 +02:00
Nico
9e7f1bf138 fix: windows path style in snapshot (#742) 2026-04-04 17:21:13 +02:00
Nicolas Meienberger
43d9cb837f refactor(datetime): always use 2 digits for day and month formatting
Fixes #744
2026-04-04 17:19:53 +02:00
Nico
95aadf6e73 refactor: dedicated edit page for notifications (#741) 2026-04-02 22:59:23 +02:00
Nico
731ebad1ee style: redesign volume details page to match repository (#740) 2026-04-02 22:55:23 +02:00
Nico
475bfb59ae style: redesign respository details page (#739) 2026-04-02 22:51:57 +02:00
Nico
e77723164b refactor: improve buttons and space with dropdowns (#738) 2026-04-02 21:44:32 +02:00
Nico
4bf1463406 refactor: dedicated edit page for volumes (#737) 2026-04-02 21:40:24 +02:00
Nico
d6e80b71d7 refactor: dedicated edit page for backups (#736) 2026-04-02 21:36:31 +02:00
Nico
4305057185 test: move test runner from Bun to Vitest (#727)
* chore: migrate to vitest

* test: speed up some suites by sharing sessions and mocking expensive non-tested actions

* test: refactor some tests to verify behavior instead of implementation details

* chore: fix linting issues
2026-04-01 20:05:54 +02:00
Nicolas Meienberger
e265f7d478 test: fix flaky test depending on mutex timing 2026-04-01 09:27:13 +02:00
Nicolas Meienberger
add0f2788f fix: restoring snapshots that have unrelated root paths 2026-03-31 23:05:19 +02:00
Nicolas Meienberger
63e12868b1 fix: react hydration issues by using the same locale during ssr and hydration 2026-03-31 22:39:16 +02:00
Nicolas Meienberger
ca38f7ca69 fix(select): render a div durng ssr to avoid hydration issues 2026-03-31 22:05:46 +02:00
Nicolas Meienberger
3acf565ccd fix: force user to provide known hosts values in sftp volume / repository creation 2026-03-31 20:27:48 +02:00
Kevin Stallone
aa7eaa0929 feat(volumes): add webdav, sftp, and rclone filters (#720)
* feat(volumes): add sftp, webdav, and rclone filters

* chore(volumes): align backend filter order with create-volume form
2026-03-31 20:27:43 +02:00
Nicolas Meienberger
e55ffccd21 feat: infer default time format from navigator.language 2026-03-30 18:44:26 +02:00
Nico
f89b8c3b52 feat: custom date time format (#718) 2026-03-29 17:24:54 +02:00