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
Nicolas Meienberger
6e68c75ef1
chore: various fixes
...
fix(create-schedule): expand folder button submitting the form
style(schedule-form): fix multi scrollbar on long file list
2026-01-09 21:25:38 +01:00
Nico
d9b150b34e
feat: add 2FA (TOTP) support ( #326 )
...
* feat: setup better-auth with 2fa
* feat(totp): frontend
* refactor: split dialogs into components
* feat: disable 2fa cli
* chore: fix liniting issues
* chore(deps): bump the minor-patch group across 1 directory with 19 updates (#327 )
* chore(deps): bump the minor-patch group across 1 directory with 19 updates
Bumps the minor-patch group with 19 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [@react-router/node](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-node ) | `7.11.0` | `7.12.0` |
| [@react-router/serve](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-serve ) | `7.11.0` | `7.12.0` |
| [@scalar/hono-api-reference](https://github.com/scalar/scalar/tree/HEAD/integrations/hono ) | `0.9.30` | `0.9.32` |
| [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query ) | `5.90.12` | `5.90.16` |
| [drizzle-orm](https://github.com/drizzle-team/drizzle-orm ) | `0.44.7` | `0.45.1` |
| [hono](https://github.com/honojs/hono ) | `4.10.5` | `4.11.3` |
| [hono-rate-limiter](https://github.com/rhinobase/hono-rate-limiter ) | `0.5.1` | `0.5.3` |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react ) | `0.555.0` | `0.562.0` |
| [react-hook-form](https://github.com/react-hook-form/react-hook-form ) | `7.69.0` | `7.70.0` |
| [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router ) | `7.11.0` | `7.12.0` |
| [recharts](https://github.com/recharts/recharts ) | `3.5.1` | `3.6.0` |
| [@faker-js/faker](https://github.com/faker-js/faker ) | `10.1.0` | `10.2.0` |
| [@happy-dom/global-registrator](https://github.com/capricorn86/happy-dom ) | `20.0.11` | `20.1.0` |
| [@hey-api/openapi-ts](https://github.com/hey-api/openapi-ts ) | `0.88.2` | `0.90.2` |
| [@react-router/dev](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dev ) | `7.11.0` | `7.12.0` |
| [@tanstack/react-query-devtools](https://github.com/TanStack/query/tree/HEAD/packages/react-query-devtools ) | `5.91.1` | `5.91.2` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt ) | `0.22.0` | `0.23.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint ) | `1.36.0` | `1.38.0` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) | `7.3.0` | `7.3.1` |
Updates `@react-router/node` from 7.11.0 to 7.12.0
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-node/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/@react-router/node@7.12.0/packages/react-router-node )
Updates `@react-router/serve` from 7.11.0 to 7.12.0
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-serve/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/@react-router/serve@7.12.0/packages/react-router-serve )
Updates `@scalar/hono-api-reference` from 0.9.30 to 0.9.32
- [Release notes](https://github.com/scalar/scalar/releases )
- [Changelog](https://github.com/scalar/scalar/blob/main/integrations/hono/CHANGELOG.md )
- [Commits](https://github.com/scalar/scalar/commits/HEAD/integrations/hono )
Updates `@tanstack/react-query` from 5.90.12 to 5.90.16
- [Release notes](https://github.com/TanStack/query/releases )
- [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md )
- [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.90.16/packages/react-query )
Updates `drizzle-orm` from 0.44.7 to 0.45.1
- [Release notes](https://github.com/drizzle-team/drizzle-orm/releases )
- [Commits](https://github.com/drizzle-team/drizzle-orm/compare/0.44.7...0.45.1 )
Updates `hono` from 4.10.5 to 4.11.3
- [Release notes](https://github.com/honojs/hono/releases )
- [Commits](https://github.com/honojs/hono/compare/v4.10.5...v4.11.3 )
Updates `hono-rate-limiter` from 0.5.1 to 0.5.3
- [Release notes](https://github.com/rhinobase/hono-rate-limiter/releases )
- [Commits](https://github.com/rhinobase/hono-rate-limiter/compare/v0.5.1...v0.5.3 )
Updates `lucide-react` from 0.555.0 to 0.562.0
- [Release notes](https://github.com/lucide-icons/lucide/releases )
- [Commits](https://github.com/lucide-icons/lucide/commits/0.562.0/packages/lucide-react )
Updates `react-hook-form` from 7.69.0 to 7.70.0
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases )
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md )
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.69.0...v7.70.0 )
Updates `react-router` from 7.11.0 to 7.12.0
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.12.0/packages/react-router )
Updates `recharts` from 3.5.1 to 3.6.0
- [Release notes](https://github.com/recharts/recharts/releases )
- [Changelog](https://github.com/recharts/recharts/blob/main/CHANGELOG.md )
- [Commits](https://github.com/recharts/recharts/compare/v3.5.1...v3.6.0 )
Updates `@faker-js/faker` from 10.1.0 to 10.2.0
- [Release notes](https://github.com/faker-js/faker/releases )
- [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md )
- [Commits](https://github.com/faker-js/faker/compare/v10.1.0...v10.2.0 )
Updates `@happy-dom/global-registrator` from 20.0.11 to 20.1.0
- [Release notes](https://github.com/capricorn86/happy-dom/releases )
- [Commits](https://github.com/capricorn86/happy-dom/compare/v20.0.11...v20.1.0 )
Updates `@hey-api/openapi-ts` from 0.88.2 to 0.90.2
- [Release notes](https://github.com/hey-api/openapi-ts/releases )
- [Changelog](https://github.com/hey-api/openapi-ts/blob/main/docs/CHANGELOG.md )
- [Commits](https://github.com/hey-api/openapi-ts/compare/@hey-api/openapi-ts@0.88.2...@hey-api/openapi-ts@0.90.2 )
Updates `@react-router/dev` from 7.11.0 to 7.12.0
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dev/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/@react-router/dev@7.12.0/packages/react-router-dev )
Updates `@tanstack/react-query-devtools` from 5.91.1 to 5.91.2
- [Release notes](https://github.com/TanStack/query/releases )
- [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query-devtools/CHANGELOG.md )
- [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query-devtools@5.91.2/packages/react-query-devtools )
Updates `oxfmt` from 0.22.0 to 0.23.0
- [Release notes](https://github.com/oxc-project/oxc/releases )
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md )
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.23.0/npm/oxfmt )
Updates `oxlint` from 1.36.0 to 1.38.0
- [Release notes](https://github.com/oxc-project/oxc/releases )
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md )
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.38.0/npm/oxlint )
Updates `vite` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.1/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v7.3.1/packages/vite )
---
updated-dependencies:
- dependency-name: "@react-router/node"
dependency-version: 7.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: "@react-router/serve"
dependency-version: 7.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: "@scalar/hono-api-reference"
dependency-version: 0.9.32
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-patch
- dependency-name: "@tanstack/react-query"
dependency-version: 5.90.16
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-patch
- dependency-name: drizzle-orm
dependency-version: 0.45.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: hono
dependency-version: 4.11.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: hono-rate-limiter
dependency-version: 0.5.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-patch
- dependency-name: lucide-react
dependency-version: 0.562.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: react-hook-form
dependency-version: 7.70.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: react-router
dependency-version: 7.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: recharts
dependency-version: 3.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: "@faker-js/faker"
dependency-version: 10.2.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: "@happy-dom/global-registrator"
dependency-version: 20.1.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: "@hey-api/openapi-ts"
dependency-version: 0.90.2
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: "@react-router/dev"
dependency-version: 7.12.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: "@tanstack/react-query-devtools"
dependency-version: 5.91.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-patch
- dependency-name: oxfmt
dependency-version: 0.23.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: oxlint
dependency-version: 1.38.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-patch
- dependency-name: vite
dependency-version: 7.3.1
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* chore: downgrade hono
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
* chore: force hono version in transitive deps
* refactor: remove copy to clipboard everywhere as it's not possible on http
* chore: pr feedbacks
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-09 21:12:05 +01:00
Jakub Trávník
d0dd74a626
fix: update NFS version select to use controlled value ( #329 )
2026-01-09 18:37:24 +01:00
Jakub Trávník
1d2e737a98
fix: increase name length limit from 32 to 128 characters in backup schedule schema ( #330 )
2026-01-09 18:29:35 +01:00
Nico
87403c9407
chore: add more linting rules and fix warnings ( #325 )
2026-01-08 18:53:02 +01:00
Nico
99932a8522
refactor: better-auth ( #319 )
...
* refactor: better-auth
* chore: pr feedback
* chore: lower + trim usernames in db
2026-01-07 22:36:20 +01:00
Nico
62de036847
refactor: improve perf by calling api in parallel in clientLoaders ( #312 )
...
* refactor: improve perf by calling api in parallel in clientLoaders
* fix: dependent api calls
2026-01-05 21:10:00 +01:00
Nicolas Meienberger
3467d1e411
Merge branch 'tvarohohlavy-local-repo-enhancements'
2026-01-05 21:06:59 +01:00
Nicolas Meienberger
b7609a6574
chore: remove needless comments
2026-01-05 21:06:36 +01:00
Nico
b216219209
refactor: move from biome to oxlint/oxformat ( #311 )
...
* chore: install and configure oxlint
* chore: fix liniting issues
* chore: install and configure oxfmt
* ci: add oxlint action instead of biome
* chore: pr feedbacks
* Revert "chore: pr feedbacks"
This reverts commit 525dcd8d9f .
2026-01-05 21:04:37 +01:00
Jakub Trávník
86263fede7
Merge branch 'main' into local-repo-enhancements
2026-01-05 08:18:31 +01:00
Nico
d293738bf4
feat: show components versions ( #297 )
...
On hover on the Zerobyte version in the sidebar
A card will appear to show the versions of the
binaries (restic, rclone, shoutrrr)
2026-01-04 21:43:39 +01:00
Nicolas Meienberger
79d5f47b19
chore(repo-form): style adjustments
2026-01-04 15:40:09 +01:00
Nicolas Meienberger
f67ca4eed2
style(delete notification): remove icon in delete button
2026-01-04 10:30:36 +01:00
Nico
d7bcf4c9e2
feat: display updates and release notes ( #290 )
...
* feat: display notification when new release is available
* refactor: standalone re-usable cache util
* refactor: clear cache on server startup
* refactor: add timeout to gh release fetch
* fix: run with app version env variable
2026-01-04 10:19:23 +01:00
Jakub Trávník
2d6c9397c0
fix: handle imported repositories correctly in getEffectiveLocalPath
...
- Imported repositories use config.path directly (matching server logic)
- Removed unused isImportedLocal variable
2026-01-03 12:47:03 +01:00
Jakub Trávník
affe0a45fa
Merge origin/main into local-repo-enhancements
2026-01-03 12:42:53 +01:00
Nico
1b88fa6bd6
style: responsive fixes ( #282 )
...
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / checks (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
* style(backups): use container queries to avoid overflow when menu is open
* style: fix breadcrumbs breaking the layout on smaller devices
* style: improve wording and error displays
* chore: wording
2026-01-02 22:10:27 +01:00
Nico
b8fe2a985b
feat: insecure tls & cacert for self-hosted repos ( #277 )
...
* feat: insecure tls & cacert for self-hosted repos
* fix: extra arg
2026-01-02 18:13:19 +01:00
Nicolas Meienberger
e0027b7668
refactor: code style and api client
2026-01-02 17:37:38 +01:00
tvories
08a19ed38d
fix: PR suggestions
2026-01-02 17:05:43 +01:00
tvories
1a12436195
fix: add property existence checks before accessing repository config fields
2026-01-02 17:05:43 +01:00
tvories
e78af76beb
feat: added additional validation, moved field location, made skip tls and ca certificate mutually exclusive with tooltips
2026-01-02 17:05:43 +01:00
tvories
07e68b9fe7
feat: add support for a cacert configuration as well as allowing the user to skip tls validation
2026-01-02 17:05:43 +01:00
Jakub Trávník
f836e2f9df
fix(backups): allow removing selected paths that no longer exist on filesystem ( #272 )
...
Add X button to selected paths list in backup schedule form. When files/folders
are selected for backup but later deleted from the volume, restic fails because
`--files-from` references non-existent paths. Previously, users couldn't remove
these stale paths since they don't appear in the file browser to uncheck.
The X button enables direct removal of any selected path, fixing stuck backup
configurations that would always fail with "file not found" errors.
2026-01-02 15:33:25 +01:00
Nico
658c42a53b
feat: add generic webhook form & refactor each type in its own form ( #239 )
...
* feat: add generic webhook form & refactor each type in its own form
* chore: pr feedbacks
* fix(email-form): filter out empty emails
2026-01-02 14:56:35 +01:00
Nicolas Meienberger
d535f02536
refactor: code readability
2026-01-02 14:24:22 +01:00
SaarLAN-Pissbeutel
1b8154a74b
add access token for ntfy notifications
2025-12-30 11:08:32 +00:00
Nico
c05aa8d5bf
feat: add support for SFTP volume backend ( #249 )
...
* feat: add support for SFTP volume backend
* feat: allow more secure SFTP connection with known hosts
* refactor: make default value for skip host key check to false
* refactor: use os.userInfo when setting uid/gid in mount commands
2025-12-28 18:30:49 +01:00
Nico
ae5233d9fb
refactor: tag snapshots with schedule short_id instead of db id ( #248 )
...
* refactor: tag snapshots with schedule short_id instead of db id
* chore: formatting issues
2025-12-28 11:42:25 +01:00
Nicolas Meienberger
52a6ed6070
refactor: import local repositories use path only and not name
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
2025-12-26 17:29:42 +01:00
Nicolas Meienberger
3ecf006977
refactor(login): extract reset password dialog to its own component
2025-12-26 17:13:26 +01:00
Jakub Trávník
a921fa4c80
fix(info): optimize effective local path retrieval in RepositoryInfoTabContent
2025-12-23 12:37:12 +01:00
Jakub Trávník
cd9f5a9bbe
feat(ui): improve local repository path display and messaging
...
- Add shared client constants file with REPOSITORY_BASE
- Show effective local path in repository info tab
- Update host mount warning to clarify default path is safe when using recommended Docker setup
- Update README to clarify local repositories can use custom paths
2025-12-23 12:23:01 +01:00
Nicolas Meienberger
5cc7450ad0
refactor(snapshot-details): make page load faster by not awaiting restic snapshot details
2025-12-22 21:18:56 +01:00
Nico
00f44e4716
fix: allow arbitrary name for repositories and correctly import existing local repos ( #197 )
...
* fix: allow arbitrary name for repositories and correctly import existing local repos
* chore: rebase conflicts
2025-12-22 20:52:26 +01:00
Nico
4e0acb5856
feat(schedule-form): allow custom cron expression ( #214 )
...
* feat(schedule-form): allow custom cron expression
* refactor: guard against potential undefined cron expression
2025-12-22 20:51:46 +01:00
Jakub Trávník
64a584f3cd
corrected webdav default path to match placeholder
2025-12-22 20:51:46 +01:00
Jakub Trávník
4dd9b7ffcc
fix: add missing path property to webdav and rclone default values
2025-12-22 20:51:46 +01:00
Nico
5f01d6f10d
feat: reset password cli command ( #220 )
...
* feat: reset password cli command
* refactor: wrap user password reset operations in db transaction
2025-12-22 20:51:46 +01:00
Jakub Trávník
65655ebb56
fix: ensure safe access to backup name and volume in snapshot filtering
2025-12-22 14:35:37 +01:00
Jakub Trávník
068f9d88b3
feat: display backup schedule and volume information in snapshot details
2025-12-22 14:17:34 +01:00
Jakub Trávník
542842d012
feat: enhance snapshot filtering by including backup schedule names and volumes
2025-12-22 14:17:19 +01:00
Nicolas Meienberger
a985c95a31
chore: wording and formatting
2025-12-21 20:37:34 +01:00
Alessandro Zappia
11f2c27f7f
add monthly backup frequency with multi-day selection
2025-12-21 20:36:13 +01:00
Nico
8cdd06ec49
fix(stop): always update status to warning when stop is executed ( #202 )
...
* fix(stop): always update status to warning when stop is executed
* fix: automatically put in_progress backups to warning during startup
2025-12-21 14:25:45 +01:00
Nico
492aa4178d
feat: allow to control --one-file-system option from the schedule config ( #201 )
2025-12-21 14:21:08 +01:00
Jakub Trávník
30685c8481
fix: include name in initial values for notification form update ( #184 )
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
2025-12-19 22:40:07 +01:00
Nico
579bc89970
fix: prepend mount path in exclude patterns ( #188 )
...
* fix: prepend mount path location in exclude patterns
* test(backups): add tests suite for backend include & exclude patterns
* test: fix leaking global module mock
2025-12-19 22:35:34 +01:00
Nico
a17da2562f
refactor(startup): ensure entities always use the latest configuration format ( #173 )
...
* refactor(startup): ensure entities always use the latest configuration schema
* refactor: await config updates to avoid race condition on later mount
2025-12-18 18:11:39 +01:00
Nicolas Meienberger
f77fd86694
Merge branch 'tvarohohlavy-secrets-management'
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
2025-12-16 20:47:29 +01:00
Nicolas Meienberger
47b3c80317
refactor(secret-input): remove isDirty check
2025-12-16 20:45:33 +01:00
Nicolas Meienberger
e57efcfcdc
refactor: extract sortable card into its own component
2025-12-16 20:23:44 +01:00
Nico
9e3cc90ba1
refactor: allow to run without the SYS_ADMIN cap for simple setups ( #138 )
...
* refactor: allow to run without the SYS_ADMIN cap for simple setups
* fix: pr feedback
2025-12-16 18:02:54 +01:00
Nico
1b6539c5bf
refactor: remove docker volum plugin functionnality ( #137 )
2025-12-16 18:02:54 +01:00
Nicolas Meienberger
fe5c9ea599
refactor(rclone-form): minor UI improvements
2025-12-16 18:02:54 +01:00
Nicolas Meienberger
affd300a09
fix(rclone-volume): remote was not loaded correctly in the form
2025-12-16 18:02:54 +01:00
Nico
3efff035c5
fix(doctor): fail gracefully in case of unexpected error ( #132 )
2025-12-16 18:02:54 +01:00
Raj Dave
008af5487d
Invalidates backup schedule queries on reorder
...
Ensures the backup schedule list is refreshed after reordering,
both on success and on error, by using the dedicated query key
instead of a generic string. This guarantees the UI reflects
the latest state.
2025-12-15 16:19:33 +03:00
Raj Dave
b51f3549c2
Backend and UI modifications to allow reordering of backup schedules
...
Adds drag-and-drop functionality to reorder backup schedules
Introduces a sort order field to the database schema and implements API endpoints to update the schedule order.
This allows users to visually prioritize their backup jobs.
2025-12-15 13:13:34 +03:00
Jakub Trávník
c4ec8ea62b
secret reference frontend usage
2025-12-15 10:50:24 +01:00
Nico
b23317354c
refactor: allow to run without the SYS_ADMIN cap for simple setups ( #138 )
...
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
* refactor: allow to run without the SYS_ADMIN cap for simple setups
* fix: pr feedback
2025-12-14 20:30:33 +01:00
Nico
361311285a
refactor: remove docker volum plugin functionnality ( #137 )
2025-12-14 11:07:32 +01:00
Nicolas Meienberger
1eb247deec
refactor(rclone-form): minor UI improvements
2025-12-14 10:44:05 +01:00
Nicolas Meienberger
7619612b1b
fix(rclone-volume): remote was not loaded correctly in the form
2025-12-14 10:33:16 +01:00
Nico
6ab5c549c1
fix(doctor): fail gracefully in case of unexpected error ( #132 )
2025-12-12 17:55:37 +01:00
Nico
c3acc26e05
refactor(notification): make username and password optional (smtp) ( #126 )
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
2025-12-10 21:36:18 +01:00
Nico
2ddf3c6597
refactor: split forms ( #124 )
...
* refactor: split create-volume-form
* refactor: split create-repository-form
* chore: pr feedbacks
2025-12-10 21:16:20 +01:00
Nico
4c0ba33b5e
feat: notify on warning separation ( #122 )
2025-12-10 18:55:37 +01:00
Nicolas Meienberger
fdb84374a0
refactor: remove icons where it was making the context worse
2025-12-06 11:13:26 +01:00
Nicolas Meienberger
b8ae10b316
fix: volume data not refreshing when changing selection
2025-12-06 10:36:39 +01:00
Nico
d542318e2c
feat: naming backup schedules ( #103 )
...
* docs: add agents instructions
* feat: naming backup schedules
* fix: wrong table for filtering
2025-12-06 10:36:39 +01:00
Jakub Trávník
4403e3cf19
Merge branch 'main' into missing-icons
2025-12-05 00:22:39 +01:00
Nicolas Meienberger
321dc4cdf7
fix: volume data not refreshing when changing selection
2025-12-04 18:54:02 +01:00
Nico
08d8a47352
feat: custom include patterns ( #104 )
...
* feat: add custom include patterns
* feat: add exclude-if-present option
2025-12-04 18:44:34 +01:00
Nico
1e20fb225e
feat: naming backup schedules ( #103 )
...
* docs: add agents instructions
* feat: naming backup schedules
* fix: wrong table for filtering
2025-12-04 18:31:00 +01:00
Nico
e7f0a2828d
feat: mirror repositories ( #95 )
...
* feat: mirror repositories
feat: mirror backup repositories
* chore: pr feedbacks
2025-12-03 20:52:47 +01:00
Jakub Trávník
ff4c1404a6
feat: add icons to buttons and alerts for improved UI clarity
2025-12-03 17:31:44 +01:00
Nico
9b46737852
refactor(repositories): add a locking mechanism for restic operations ( #94 )
...
* refactor(repositories): add a locking mechanism for restic operations
* fix: add missing lock in list repositories
2025-12-01 19:47:21 +01:00
Nicolas Meienberger
dbd9ae2241
chore: generate types
2025-11-30 17:05:40 +01:00
Nico
0287bca4bb
restore as a page ( #87 )
...
* feat: add custom restore target directory
Adds the ability to restore snapshots to a custom directory instead of
only the original path. Closes #12 .
Changes:
- Add target parameter to restore API endpoint
- Add directory picker UI in file browser restore dialog
- Add target input field in snapshot restore form
- Create reusable PathSelector component
Note: Run `bun run gen:api-client` after merging to regenerate types.
* refactor: path selector design
* refactor: unify restore snapshot dialogs
* refactor: restore snapshot as a page
* chore: fix liniting issues
* chore(create-notification): remove un-used prop
---------
Co-authored-by: Deepseek1 <Deepseek1@users.noreply.github.com>
2025-11-30 16:47:14 +01:00
Jakub Trávník
03b898f84c
Update app/client/modules/notifications/components/create-notification-form.tsx
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-30 15:38:45 +01:00
Jakub Trávník
6fbb11fefe
telegram notification
2025-11-30 15:15:26 +01:00
Nico
3bf3b22b96
feat: restore to custom location ( #78 )
...
* feat: restore to custom location
* refactor: define overwrite mode in shared schema
2025-11-29 16:53:44 +01:00
Nicolas Meienberger
0dfe000148
feat: rename volumes & repositories
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
2025-11-28 20:47:27 +01:00
Nico
673827f9f3
refactor: all timestamps to ms ( #77 )
...
* refactor: change all timestamps to be in miliseconds
* chore: format files
* chore: fix syntax error
2025-11-26 23:20:22 +01:00
Nico
b26a062648
refactor: use short ids to allow changing the name of volumes & repos ( #67 )
...
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
* refactor: use short ids to allow changing the name of volumes & repos
* refactor: address PR feedbacks
* fix: make short_id non null after initial population
2025-11-26 19:47:09 +01:00
Nico
d190d9c8cd
feat: partial success warning status ( #74 )
...
* feat: report partial backups with warnings
* chore: rebase
* chore: remove un-used size prop
2025-11-26 19:02:29 +01:00
Nicolas Meienberger
e99487eed9
fix(notifications): multiple providers using the wrong params
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
2025-11-23 21:09:23 +01:00
Nicolas Meienberger
43dfe6b190
chore: fix typing issue
2025-11-22 17:50:58 +01:00
Nicolas Meienberger
8c4939af4e
feat(notifications): native support for pushover
2025-11-22 17:48:19 +01:00
Nicolas Meienberger
a622b5e689
feat: exclude specific xattr during restore
2025-11-22 17:39:08 +01:00
Nico
6c30e7e357
Feat/notifications alerts ( #52 )
...
* feat: notifications backend & creation
* feat: assign notification to backup schedule
* refactor: status dot one component
* chore(notification-details): remove refetchInterval
2025-11-22 14:58:21 +01:00
Nico
a250c442f8
feat: add sftp repositories support ( #36 )
2025-11-20 20:31:40 +01:00
Nico
cb0d23fd52
refactor: rebrand to zerobyte ( #45 )
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
2025-11-20 18:59:57 +01:00
Copilot
0d36484c04
Add "Ironmount" prefix to page titles and display version in sidebar ( #28 )
...
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
* Initial plan
* Initial exploration - understanding the codebase
Co-authored-by: nicotsx <47644445+nicotsx@users.noreply.github.com>
* Add "Ironmount - " prefix to all route titles and version in sidebar
Co-authored-by: nicotsx <47644445+nicotsx@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: nicotsx <47644445+nicotsx@users.noreply.github.com>
2025-11-16 16:49:35 +01:00
Nico
e5435969be
feat: remove individual snapshot ( #26 )
2025-11-16 11:14:18 +01:00
Nicolas Meienberger
54ee02deb9
feat(backups): manual repository cleanup
2025-11-15 11:24:17 +01:00
Renan Bernordi
9a1797b8b2
backup file and folders
2025-11-14 23:21:13 -03:00
Nicolas Meienberger
cfeff643c4
refactor(create-volume): from dialog to page
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
2025-11-14 21:23:52 +01:00
Nicolas Meienberger
c898e1ce07
refactor(create-repository): from dialog to page
2025-11-14 21:10:40 +01:00
Nicolas Meienberger
00916a1fd2
refactor(browsers): create hook for common operations
2025-11-14 20:56:06 +01:00
Nicolas Meienberger
6e6becec3b
refactor(breadcrumbs): use handler & match pattern
2025-11-13 22:28:53 +01:00
Nico
95a0d44b45
refactor: unify backend and frontend servers ( #3 )
...
* refactor: unify backend and frontend servers
* refactor: correct paths for openapi & drizzle
* refactor: move api-client to client
* fix: drizzle paths
* chore: fix linting issues
* fix: form reset issue
2025-11-13 20:11:46 +01:00