Nicolas Meienberger
4c6f8bd121
refactor: switch runtime to node.js
2026-06-09 19:50:27 +02:00
Nicolas Meienberger
2b9097a593
refactor: exclude restic cache from backups by default
2026-06-07 10:53:44 +02:00
Nico
7c1f0c52d5
refactor(repo-mutex): use effect.ts ( #950 )
...
* refactor(repo-mutex): use effect.ts
* refactor(mutext): run with signal to preserve abort reason
2026-06-06 15:06:26 +02:00
Nicolas Meienberger
111a5843ef
refactor: reject all non uv passkeys
2026-06-03 17:03:00 +02:00
Nico
94f6d0529f
refactor(mutext): persist repository locks in database ( #895 )
...
* refactor(mutext): persist repository locks in database
* fix: clean up promoted repository lock on queued abort
* fix: throttle repository lock cleanup during polling
2026-05-19 18:59:40 +02:00
Nico
11dacd7c71
refactor(agent): store SFTP volume keys in tmp ( #888 )
...
* refactor(agent): store SFTP volume keys in tmp
* refactor: store temp keys in /run/zerobyte subfolders
* fix(restic): clean temp secrets dir on env setup failure
* fix: one secrets temp dir per env building
2026-05-17 18:19:09 +02:00
Nico
a58fe82d48
refactor: move backup path resolution into agent contract ( #872 )
2026-05-10 21:46:03 +02:00
Nicolas Meienberger
8772d4796e
feat(backups): configure backup webhook timeout
2026-05-04 07:52:21 +02:00
Nico
220e2d2801
feat: make webhook calls trusted only ( #848 )
...
* feat: make webhook calls trusted only
* fix: pr feedbacks
2026-04-30 22:14:22 +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
Nico
4520335ebc
fix(rclone): pass explicitly the RCLONE_CONF env var ( #779 )
2026-04-12 09:25:57 +02:00
Nico
28ba8657f9
feat(runtime): start and ship the local agent ( #767 )
...
* feat(runtime): start and ship the local agent
* refactor: gate local agent behind feature flag
* chore: skip agent manager if flag is false
* fix: hot reload agents
* test: fix config tests
2026-04-10 00:00:30 +02:00
Nico
70c7de1efc
feat(config): add support for APP_SECRET as a file ( #769 )
...
* feat(config): add support for APP_SECRET as a file
* fix(tsc): ensure appSecret is set in type system
* fix: pr feedback
2026-04-09 23:13:07 +02:00
Nicolas Meienberger
049becb900
refactor(mutex): improve multi locks operations to wait for all
...
Wait for all locks to be available instead of locking one side and
waiting
2026-04-07 18:13:02 +02:00
Nico
a4e54ac527
fix: serialize mirror copy operations per destination repository ( #747 )
...
* fix: serialize mirror copy operations per destination repository
* refactor(copy-mirror): implement acquireMany to avoid deadlock cycles
2026-04-04 17:12:45 +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
Nico
e39220c024
fix: allow quoted urls in env variables ( #676 )
2026-03-17 22:09:22 +01:00
Nicolas Meienberger
b298524663
test: disable rate limiting in testing
2026-03-13 23:05:14 +01:00
Nico
7473c29948
feat: protect restores that would overwrite important internal path ( #663 )
2026-03-13 21:33:37 +01:00
Nico
9632c77177
feat: add a trust proxy env to control whether to trust incoming x-forwarded-for headers ( #662 )
2026-03-13 19:08:08 +01:00
Nico
d74f516336
feat: file-based provisionning of volumes and repos ( #656 )
...
* feat: file-based provisionning of volumes and repos
docs: provisioning example
chore: ui improvements
* chore: ci issues
2026-03-12 18:31:42 +01:00
Nico
332e5bffda
refactor: extract restic in core package ( #651 )
...
* refactor: extract restic in core package
* chore: add turbo task runner
* refactor: split server utils
* chore: simplify withDeps signature and fix non-null assertion
2026-03-11 21:56:07 +01:00
Nico
df312cd419
refactor: move from arktype to zod ( #637 )
...
chore: gen api-client
2026-03-09 18:27:03 +01:00
Nico
dd8f471d60
feat: light theme ( #638 )
2026-03-09 18:16:50 +01:00
Nicolas Meienberger
3d2900ab69
refactor: harden cron validation and fail early in case of wrong pattern
2026-03-08 12:47:19 +01:00
Vutsal
4d8a0b28ca
Refactor scheduler to use CronExpressionParser
2026-03-07 21:51:28 -08:00
Nico
4a812a884b
refactor(restic): split each command into its own file ( #584 )
...
refactor(restic): split each command into its own file
refactor: add missing await before promise expects
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
## Release Notes
* **Tests**
* Improved async assertion handling across test suites for enhanced test reliability
* Expanded test coverage for backup, restore, and other core operations
* **Refactor**
* Reorganized internal utility structure for improved code maintainability
* **Chores**
* Updated linting configuration and TypeScript dependencies
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-26 19:51:24 +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
de1278a416
refactor: rename DATABASE_URL -> ZEROBYTE_DATABASE_URL ( #528 )
2026-02-16 19:43:43 +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
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
12d0eda6ef
feat: dev panel ( #489 )
...
* feat: dev panel
* chore: fix typing issue
2026-02-09 22:04:21 +01:00
Nico
4c7bd31b88
feat: custom rclone conf dir env variable ( #432 )
...
* feat: custom rclone conf dir env variable
Closes #238
* chore: rename RCLONE_CONF_DIR -> RCLONE_CONFIG_DIR
2026-02-01 10:24:09 +01:00
Nico
45032362a8
feat: base-url env variable ( #419 )
2026-01-28 01:19:37 +01:00
Nicolas Meienberger
458799297d
refactor: make sse events isolated per org
2026-01-24 22:45:56 +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
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
Nico
bb2bdb9724
test(e2e): admin user registration ( #338 )
...
* test(e2e): admin user registration
* ci: e2e workflow
* feat: disable rate limiting env var
* test(e2e): fix order of execution in registration tests
* ci: run e2e tests before release
2026-01-11 10:31:04 +01:00
Nicolas Meienberger
185ce22ce9
feat: configurable trusted origins
2026-01-10 13:22:57 +01:00
Nico
1074d022b3
chore: add a pre-commit hook to format files ( #336 )
...
chore: add a pre-commit hook to format files
2026-01-10 11:57:24 +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
76741d6fb8
refactor: implement a proper code migration system ( #324 )
...
* refactor: implement a proper code migration system
* chore: rename .tsx -> .ts
2026-01-08 18:46:32 +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
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
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
1fff5f53c5
chore: fix migration version
2026-01-03 00:26:57 +01:00