Jakub Trávník
45b5c0d752
feat(cli): add import-config command for manual config import
...
Add CLI command to import configuration from file or stdin, providing
an alternative to the env-var-based automatic import on startup.
Features:
- `import-config --config <path>` to import from a mounted file
- `import-config --stdin` to import from piped input (no file mount needed)
- `import-config --dry-run` to validate config without importing
Changes:
- Add app/server/cli/commands/import-config.ts with new command
- Register importConfigCommand in CLI index
- Refactor config-import.ts: extract runImport() and add applyConfigImport()
for direct config object import (used by CLI)
- Update docs with both import methods (env var and CLI examples)
2025-12-29 11:04:12 +01:00
Jakub Trávník
7476897f87
feat(config-import): support mirrors, oneFileSystem, and optional flags
...
- Add mirrors support for backup schedules (copy to secondary repos)
- Add oneFileSystem flag to prevent crossing filesystem boundaries
- Support autoRemount=false for volumes (defaults to true)
- Support enabled=false for notification destinations (defaults to true)
- Optimize: move early return before dynamic imports in importBackupSchedules
- Update example config and README with new fields documentation
2025-12-23 15:29:27 +01:00
Jakub Trávník
9e9edd73a1
Merge remote-tracking branch 'origin/main' into config-import-json
2025-12-23 13:18:14 +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
Nicolas Meienberger
59e0dc0401
chore: small code style changes
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
Nico
21b0c5e59c
feat: server timeout env ( #219 )
...
* feat: increase server idle timeout and allow to modify it via env
* chore(app): move auth middleware to individual controller
To clean up de main app.ts file
* chore: remove console.log
2025-12-22 20:51:46 +01:00
Jakub Trávník
cf9357b4f1
feat: display file size in the File component
2025-12-22 20:51:46 +01:00
Jakub Trávník
883ee49ded
Merge remote-tracking branch 'origin/main' into config-import-json
2025-12-22 16:27:52 +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
9caccc969c
Update app/client/components/snapshots-table.tsx
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-22 14:26:39 +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
Jakub Trávník
299469728e
feat: add volume column to snapshots table and display backup volume names
2025-12-22 14:16:57 +01:00
Jakub Trávník
e992c6739a
fix: update backup display name in snapshots table
2025-12-22 14:16:20 +01:00
Nicolas Meienberger
a985c95a31
chore: wording and formatting
2025-12-21 20:37:34 +01:00
Alessandro Zappia
e350843d4e
Update app/utils/utils.ts
...
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-21 20:36:13 +01:00
Alessandro Zappia
47aefa9bcb
Update app/utils/utils.ts
...
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-21 20:36:13 +01:00
Alessandro Zappia
11f2c27f7f
add monthly backup frequency with multi-day selection
2025-12-21 20:36:13 +01:00
dependabot[bot]
fe8eb1326d
chore(deps-dev): bump @types/node from 24.10.4 to 25.0.3 ( #209 )
...
* chore(deps-dev): bump @types/node from 24.10.4 to 25.0.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) from 24.10.4 to 25.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-version: 25.0.3
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* chore: use rm instead of rmdir
---------
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>
2025-12-21 19:51:03 +01:00
Nicolas Meienberger
c426bdcbf8
fix: sftp keep alive
2025-12-21 15:37:21 +01:00
Nicolas Meienberger
6cc10293e1
fix: migration using 1 instead of true
2025-12-21 15:27:12 +01:00
Nico
ea9d867cd2
feat: version link to gh release in sidebar ( #203 )
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-21 14:39:30 +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
8c3e85cb50
Merge remote-tracking branch 'origin/main' into config-import-json
2025-12-21 13:12:47 +01:00
Nico
fc04cfe02e
refactor(restic): use safeSpawn util instead of Bun shell ( #195 )
...
Bun has an issue with special non-ASCII charachters
https://github.com/oven-sh/bun/issues/15929 that makes commands crash if
manipulating a file with such charachter
2025-12-20 11:47:45 +01:00
Nico
598de4e078
fix: schedules not running if never run manually ( #194 )
...
* fix: backups that were never run manually are not picked up by job
* fix(mutex): prioritize waiting exclusive locks over newly added shared tasks
2025-12-20 11:28:18 +01:00
Nicolas Meienberger
febd795517
refactor: warning only when backup is aborted
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 23:30:23 +01:00
Nicolas Meienberger
46c8139a23
fix: ensure proper error message when backup operation is aborted
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 23:27:25 +01:00
Nicolas Meienberger
7879d88a54
fix(backups): preserve relative include/exclude pattern behavior
2025-12-19 23:18:56 +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
61dc07b36b
Controllers tests ( #187 )
...
* test: backups service
* refactor: create hono app in a separate file
To avoid side effects like db migration or startup scripts when testing
test(backups): add security tests to the backups controller
* ci: run typechecks, build and tests on PR
* test: controllers security tests
* chore: update lock file
* refactor: pr feedbacks
2025-12-19 19:25:21 +01:00
Jakub Trávník
6e1cc89caa
Merge origin/main into config-import-json
2025-12-19 14:23:02 +01:00
Nico
94f49e2022
refactor: separate healthcheck and auto remount in two separate jobs ( #179 )
...
* refactor: separate healthcheck and auto remount in two separate jobs
* fix: try catch in volume auto remount
2025-12-18 23:03:41 +01:00
Nico
6a86de7b95
refactor: add default excludes to backups ( #178 )
...
- To avoid accidentaly backing up a repository to itself
- To avoid accidentaly backing up zerobyte's internal data
2025-12-18 22:34:21 +01:00
Nico
fd5193b5e3
refactor: reduce startup mounting noise ( #177 )
...
- Skip mount early if volume is not in error or neither mounted
- Error healthchecks early if volume is not mounted
2025-12-18 22:19:21 +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
Jakub Trávník
7f124f81cb
refactor the import logic
...
- Updated README to reflect changes in config file structure and usage.
- Modified error messages for user registration to be more generic.
- Cleaned up startup logic to utilize the new config import functionality when requested.
- Adjusted JSON config structure to support user definitions.
2025-12-18 15:31:27 +01:00
Nicolas Meienberger
7951a87332
refactor: don't apply strict rate limit on /me and /status endpoints
2025-12-18 12:09:34 +01:00
Nicolas Meienberger
0838ce86bd
refactor: remove cors options and fix rate limiter usage
2025-12-17 23:40:57 +01:00
Nicolas Meienberger
45e7e88b09
fix: apply middlewares before the controller definition
2025-12-17 23:35:47 +01:00
Nicolas Meienberger
1d76e18d38
fix(sortable-card): keep opacity at 100 on mobile
2025-12-17 23:35:14 +01:00
Jakub Trávník
0b2576af91
Merge remote-tracking branch 'origin/main' into config-import-json
2025-12-17 18:27:32 +01:00
Nicolas Meienberger
13e080a189
fix: apply middlewares before the controller definition
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-17 16:23:50 +01:00