Commit Graph

154 Commits

Author SHA1 Message Date
Nicolas Meienberger
d4f585d5c8 chore: fix lint issues 2026-02-24 11:55:05 +01:00
Nicolas Meienberger
2d2183baaf refactor: cleanup / pr review 2026-02-24 11:55:05 +01:00
Nicolas Meienberger
5e4f3fca62 refactor: restrict provider configuration to super admins only 2026-02-24 11:55:05 +01:00
Nicolas Meienberger
a30af6026d refactor: code style 2026-02-24 11:55:05 +01:00
Nicolas Meienberger
de34fd841c feat: per-user account management 2026-02-24 11:55:05 +01:00
Nicolas Meienberger
0bf0094dbd refactor: own page for sso registration 2026-02-24 11:55:05 +01:00
Nicolas Meienberger
4619d9d976 feat: link current account 2026-02-24 11:55:05 +01:00
Nicolas Meienberger
a3af29ec4e feat: oidc
feat: organization switcher

refactor: org context

feat: invitations

GLM
2026-02-24 11:55:05 +01:00
Nico
45fd9f9de1 feat: repository used space (#551)
* feat: repository used space

refactor: use a smarter cache key logic for easier invalidations

* chore: pr feedbacks
2026-02-21 10:52:55 +01:00
Nico
182d39a887 feat: restore snapshot as tar (#550)
* feat: export snapshot as tar file

chore(mutext): prevent double lock release

* chore: pr feedbacks

* fix: dump single file no tar

* chore: pr feedbacks
2026-02-21 10:19:20 +01:00
Nico
8681ebc0c0 refactor: always use short id in api calls (#545) 2026-02-19 20:08:40 +01:00
Nico
8fcd446926 refactor: snapshot strip out base path (#542)
* refactor: strip out volume path in snapshot list / restore

chore: lint issue

* test: backups new include patterns
2026-02-18 21:45:19 +01:00
Nico
ca8248b2a0 ui: scroll to error (#541)
* refactor: scroll to first error when submitting a form

* refactor: split file browsers into dedicated components with base

* chore: pr feedbacks
2026-02-18 20:13:09 +01:00
Nicolas Meienberger
85e2272a5c fix(ui): missing @container class in backup details 2026-02-17 19:29:10 +01:00
Nico
f059a23ecc fix: multiple mobile and responsiveness issues (#537)
* fix: multiple mobile and responsiveness issues

fix(mobile): scroll reset on snapshot selection

fix(mobile): layout improvements

refactor(volume-details): improve layout

refactor: better card breakpoints layouts in backps list

fix(ui): keep sidebar in the state it was before reloading

refactor(ui): keep the same grid size in all breakpoints

refactor: manual hotkey devpanel to tanstack hotkeys

* chore: pr feedback
2026-02-17 18:44:22 +01:00
Nico
dda7b9939f refactor: allow more characters in usernames (#529) 2026-02-16 21:37:15 +01:00
Nico
99bb296866 fix: cascade delete not correctly applied (#531) 2026-02-16 21:36:07 +01:00
Nico
8e5eb68935 refactor: optimistic ui when deleting a snapshot (#515) 2026-02-14 13:47:09 +01:00
Nico
bad944a232 feat: restore progress (#281)
* feat: restore progress

* feat: keep restore progress on reload

* refactor: centralize sse event types

* refactor(sse): generic handler factory
2026-02-14 12:35:16 +01:00
Nico
1017f1a38b feat: edit repository form (#507)
* feat: edit repository form

* refactor: local repo path concat as a code migration

* refactor: server constants

* chore: fix lint issue in test file

* refactor: add auth to getServerConstants
2026-02-14 11:49:33 +01:00
Nico
ec4cf938bc feat: show progress indicator on mirrors (#499)
* feat: show progress indicator on mirrors

refactor: remove unnecessary useEffects

* refactor: pr feedbacks
2026-02-12 22:27:30 +01:00
Nico
7ebce1166b feat: expand snapshot details with additional info (#505)
* feat: extend snapshot details with more info

Closes #385

* refactor: centralize restic backup schemas

* refactor: pr feedbacks
2026-02-12 18:25:21 +01:00
Nico
825d46c934 refactor: react-router -> tanstack start (#498)
* refactor: move to tanstack start

* refactor: auth flow & volumes

* refactor: repo & snapshot details

* refactor: backups, create repo, volumes

* refactor: create volume & restore snapshot

* refactor: notifications

* refactor: settings

* refactor: breadcrumbs

* fix: ts issues

* refactor: prod deployment

* fix: import css production

* refactor: nitro build

* refactor: winston -> consola

* fix: memory leak is sse events cleanup

* fix: cli usage

* chore: remove rr routes file

* refactor: pr feedbacks

* refactor: patch api client to have a global client per call

* refactor: pr feedbacks

* fix(dockerfile): add explicit port

* fix(e2e): healthcheck under /api
2026-02-11 21:41:06 +01:00
Nico
b45d36e06a refactor: make lock errors cleaner and show unlock button (#493)
* refactor: make lock errors cleaner and show unlock button

* chore: pr feedbacks
2026-02-10 20:18:25 +01:00
Nico
09c1cbbb94 feat: show retention tags in snapshots timeline (#462)
* feat: show retention tags in snapshots timeline

* refactor: use button for accesibility
2026-02-08 16:14:43 +01:00
Nicolas Meienberger
1e5921fa61 fix(create-repo): directory selection 2026-02-02 20:34:37 +01:00
Nico
17b4027e0b refactor: split create schedule form (#453) 2026-02-02 18:18:14 +01:00
Nico
5bb5fcd09c refactor: paginate large file counts (#441)
* refactor: add pagination to handle volume folders with extremely large folder counts

* refactor: stream restic ls result

* test: file-tree load more

* refactor: string params

* fix(tsc): string pagination params

* chore: pr feedbacks
2026-01-31 16:05:42 +01:00
Nico
b8ad1ae41a refactor: show progress card even if no data is streamed (#440) 2026-01-31 13:26:10 +01:00
Nicolas Meienberger
d4864099a6 style(create-backup): fix cards overlap 2026-01-31 10:44:51 +01:00
Nico
8ced05c5a9 feat: add refresh snapshot list and snapshot error page (#434)
Closes #372
2026-01-29 23:20:13 +01:00
Nico
da5ad5c817 feat: add config for SMB guest mode (#431)
* feat: add config for SMB guest mode

Closes #279

* chore: pr feedbacks
2026-01-29 23:16:31 +01:00
Nico
3786a9283b fix(backup-card): dot invisible if volume name too long (#430) 2026-01-29 21:14:21 +01:00
Nico
bde5302ca4 feat(smtp-notification): add missing from name param to form (#429)
* feat(smtp-notification): add missing from name param to form

* chore: gen api client
2026-01-29 21:13:51 +01:00
Nico
93aabebd51 refactor: remove slug constraint in volume name (#428)
* refactor: remove slug constraint in volume name

Closes #413

* chore: remove un-used imports

* fix(notifications): validate name is not empty

* refactor: deny empty names
2026-01-29 20:57:20 +01:00
Didin Sino
d449547336 feat: add support for sending notifications to Telegram group topics (#401) 2026-01-27 19:43:05 +01:00
Nico
273aa2b9ac feat: add a confirm dialog before stopping the backup (#409) 2026-01-25 10:20:23 +01:00
Nicolas Meienberger
0e5438897c fix(repo-mutex): catch errors and remove listener 2026-01-22 22:06:39 +01:00
Nico
2ab37e6b67 refactor: async doctor (#375)
* feat: background doctor operation

* refactor(repo-details): design layout

* refactor(doctor): support abort signal in all operations

* chore: fix linting issue

* chore: pr feedbacks

* chore: merge conflicts

* refactor: handle aborted signal in all operations

* chore: pr feedbacks

* chore: remove old migration
2026-01-22 21:55:45 +01:00
Nico
da37b08fa0 feat: user management (#394)
* feat: user management settings

* feat: cleanup user's org when deleting them

* chore: pr feedback

* refactor(create-user): tanstack mutation
2026-01-21 22:25:15 +01:00
Nico
451aed8983 Multi users (#381)
* feat(db): add support for multiple users and organizations

* feat: backfill entities with new organization id

* refactor: filter all backend queries to surface only organization specific entities

* refactor: each org has its own restic password

* test: ensure organization is created

* chore: pr feedbacks

* refactor: filter by org id in all places

* refactor: download restic password from stored db password

* refactor(navigation): use volume id in urls instead of name

* feat: disable registrations

* refactor(auth): bubble up auth error to hono

* refactor: use async local storage for cleaner context sharing

* refactor: enable user registration vs disabling it

* test: multi-org isolation

* chore: final cleanup
2026-01-20 22:28:22 +01:00
Nicolas Meienberger
f4a222aa15 refactor(up/down limit): allow floating value & default to 1 2026-01-15 18:27:50 +01:00
Nicolas Meienberger
1622e34b0d refactoring(bw-limit): stylistic refactoring 2026-01-15 18:07:00 +01:00
Nicolas Meienberger
f0871ece52 chore: hide email in settings (not yet changeable) 2026-01-15 16:13:39 +01:00
Nicolas Meienberger
4fda10d89d style(snapshots-timeline): ensure same width for all cards 2026-01-15 16:13:14 +01:00
Nico
9bff375217 refactor: format dates in a human-friendly way (#334) 2026-01-15 16:13:14 +01:00
Raj Dave
623b4b7116 Remove 'Upload Limit' and 'Download Limit' text 2026-01-13 23:07:03 +03:00
Raj Dave
a7a4ccef6b fix a lot of the coderabbit warnings 2026-01-10 14:23:39 +03:00
Raj Dave
db127afe5a Adds bandwidth limiting to repositories
Implements bandwidth limits for repository uploads and downloads.

Adds UI components to configure bandwidth limits.
Adds database fields to store bandwidth limit configuration.
Integrates bandwidth limiting into restic commands.
2026-01-10 14:03:45 +03:00
Nicolas Meienberger
99b7f35d8e Merge branch 'to-cherry' 2026-01-09 21:27:25 +01:00