Commit graph

547 commits

Author SHA1 Message Date
Jakub Trávník
08f7dca07b
Merge branch 'main' into config-import-json 2026-01-05 08:18:56 +01:00
Nico
21040d7d4c
feat: detect if a custom docker hostname was set before defaulting to zerobyte (#298) 2026-01-05 07:07:35 +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
d6a5c1f10c docs(readme): add section about configurations 2026-01-04 20:56:06 +01:00
Nico
a2ee223ee7
refactor: use backend cache in restic operations (#295) 2026-01-04 16:37:42 +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
Nicolas Meienberger
80acbbabe1 docs: update version in readme 2026-01-04 07:31:40 +01:00
Jakub Trávník
b0d9985964
Merge branch 'main' into config-import-json 2026-01-03 12:08:38 +01:00
Nicolas Meienberger
1fff5f53c5 chore: fix migration version
Some checks failed
Release Workflow / checks (push) Has been cancelled
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
2026-01-03 00:26:57 +01:00
Nicolas Meienberger
3eb07ef924 refactor: allow the server to start, even in case of migration failure
Some checks failed
Release Workflow / checks (push) Has been cancelled
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
2026-01-03 00:16:42 +01:00
Nico
b0a1e4b3d7
fix: also migrate tag for schedule mirrors (#283)
Some checks failed
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
2026-01-02 23:07:14 +01:00
Nico
1b88fa6bd6
style: responsive fixes (#282)
Some checks failed
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
08e43e1f07 Merge branch 'tvories-feat/rest-tls-support' 2026-01-02 17:37:56 +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
Nico
2c786dfb35
feat: snapshots bulk actions (#256)
* feat: delete snapshots in bulk

* feat: re-tag snapshots in bulk

* chore: pr feedbacks
2026-01-02 17:04:06 +01:00
Nico
013fe5a521
Fix/file tree selection parents (#276)
* fix(file-tree): propagate path simplification to parents

When all childs of a folder are selected in the tree, the selected path
was only simplifiyng one level. But if the reduction was also making its
own parent "fully selected" it was not correctly reporting only the
parent as selected

* test(file-tree): ensure path selection correctness

* fix(file-tree): cleanup based on given path not what's visible
2026-01-02 16:56:13 +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
Nicolas Meienberger
5d7c6bd543 fix: cli not running with prod image 2026-01-02 15:22:44 +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
Jakub Trávník
88d5e17713
Merge branch 'main' into config-import-json 2026-01-02 14:38:55 +01:00
Nicolas Meienberger
b0c397ab87 Merge branch 'SaarLAN-Pissbeutel-ntfy-access-token' 2026-01-02 14:24:43 +01:00
Nicolas Meienberger
d535f02536 refactor: code readability 2026-01-02 14:24:22 +01:00
Jakub Trávník
94c84d7c58
feat: include schedule name in backup notifications and logs (#215)
* feat: include schedule name in backup notifications and logs

* lint fixes
2026-01-02 14:22:03 +01:00
Jakub Trávník
8591432c59 refactor: add ArkType schema validation for config import
- Add app/schemas/config-import.ts with ArkType schemas for upfront validation
- Replace runtime type checks with schema-based validation in config-import.ts
- Return validation errors early with detailed path and message info
- Export retentionPolicySchema from backups.dto.ts for reuse
- Update CLI to handle validation errors in both dry-run and import modes
- Fix README mirrors examples to use existing repository names
2026-01-02 14:02:06 +01:00
Jakub Trávník
24f850b3b9 refactor: move toError function to utils/errors for reuse across modules 2026-01-02 11:54:26 +01:00
Jakub Trávník
4889b852be fix: remove startup import type from README 2026-01-02 10:38:25 +01:00
Jakub Trávník
04cbb58559 refactor: remove config import from startup and update README for CLI usage 2026-01-02 10:35:18 +01:00
Jakub Trávník
b25ed606b2 fix: replace Error with BadRequestError for invalid shortId format in repository and volume creation 2026-01-02 10:23:48 +01:00
Jakub Trávník
88bb174423 feat: add option to overwrite recovery key during config import and prevent overwrite if database is not empty 2026-01-02 10:19:20 +01:00
Jakub Trávník
cc9982b764 feat: add support for provided shortId in volume, repository and backup and pass shortIds to service creation from config import 2026-01-02 09:54:52 +01:00
Jakub Trávník
37d04d3b61 fix: normalize names for existence checks 2025-12-31 12:06:16 +01:00
Jakub Trávník
0be65dc9b4 fix: normalize notification destination names before checking for existence 2025-12-30 19:14:49 +00:00
Jakub Trávník
3c7419f401 make the isexisting repo in location check for all repos 2025-12-30 14:33:22 +01:00
SaarLAN-Pissbeutel
a5242fa64a
code cleanup
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-30 13:06:11 +01:00
SaarLAN-Pissbeutel
15fe9b25bd code cleanup 2025-12-30 11:56:13 +00:00
Jakub Trávník
60c0778b74 refactor: improve config import logging, add CLI JSON output and idempotent re-runs
- Add `--json` flag for machine-readable JSON output
- Add `--log-level` flag to control logging verbosity
- Add `skipped` counter to ImportResult for idempotent operations
- Change "already exists" conditions from warnings to skipped (info logs)
- Recovery key mismatch now errors and stops import early
- Pre-check volumes and notification destinations before creation
- Attachment functions merge missing items instead of overwriting
- Add toError() and mergeResults() helpers to reduce code duplication
- Extract readConfigJson() and createOutput() for cleaner CLI code
- Move fs/path imports to top level in config-import.ts
2025-12-30 12:39:02 +01:00
SaarLAN-Pissbeutel
1b8154a74b add access token for ntfy notifications 2025-12-30 11:08:32 +00:00
Jakub Trávník
16ef4b4861 docs: add host-side environment variable interpolation examples for CI/CD 2025-12-30 10:31:18 +01:00
Jakub Trávník
e9424e3145
Merge branch 'main' into config-import-json 2025-12-29 23:55:42 +01:00
James Brink
eded452c83
feat: parameterize PORT and MIGRATIONS_PATH environment variables (#253)
* feat: parameterize PORT and MIGRATIONS_PATH environment variables

Allow configuring the server port (default: 4096) and migrations
folder path via environment variables for flexible deployment.

* fix: address PR review feedback

- Use consistent schema syntax (string? instead of key?)
- Remove config tests per maintainer request
2025-12-29 20:59:38 +01:00
Jakub Trávník
3c32b3ec0f
Merge branch 'main' into config-import-json 2025-12-29 20:56:42 +01:00
Jakub Trávník
f908883784
Fix error handling in repository existence check 2025-12-29 20:54:30 +01:00
Jakub Trávník
e5d8827fd8
Enhance error logging for repo existence check
Improve error handling in repository existence check.
2025-12-29 20:46:21 +01:00