Commit Graph

55 Commits

Author SHA1 Message Date
Nico
7b5c53bb7d fix(sftp): allow legacy ssh rsa to add support for older servers (#921)
* refactor(e2e): use more stable assertion

* feat(sftp): add legacy ssh-rsa option
2026-05-27 21:19:23 +02:00
Nico
19a0781667 test: backend integration (#889)
* test: backend integration

* docs: mounted shares acls

* feat: smb expose real ACLs when available

* fix: re-init repo on setup

* chore: add missing @hono/standard-validator package

* chore: add happy-dom dev dep
2026-05-17 15:18:56 +02:00
Nico
aa7da321ba refactor: dedpulicate volume schemas across packages (#864) 2026-05-09 15:36:25 +02:00
Antoine Jeanselme
3d5a0a9b75 feat: add repositories & volumes column sorting (#808)
* Add repository column sorting

* Make status title correctly centered o nsmaller screens

* Add volumes column sorting

* refactor: use tanstack table for filtering and sorting

* feat: make notifications sortable

* chore: pr feedbacks

---------

Co-authored-by: Antoine Jeanselme <67123340+ajeanselme@users.noreply.github.com>
Co-authored-by: Nicolas Meienberger <github@thisprops.com>
2026-05-02 10:21:42 +02:00
Nico
6ae5a33acd chore: remove dead files (#827) 2026-04-22 22:13:24 +02:00
Nico
731ebad1ee style: redesign volume details page to match repository (#740) 2026-04-02 22:55:23 +02:00
Nico
e77723164b refactor: improve buttons and space with dropdowns (#738) 2026-04-02 21:44:32 +02:00
Nico
4bf1463406 refactor: dedicated edit page for volumes (#737) 2026-04-02 21:40:24 +02:00
Nicolas Meienberger
ca38f7ca69 fix(select): render a div durng ssr to avoid hydration issues 2026-03-31 22:05:46 +02:00
Nicolas Meienberger
3acf565ccd fix: force user to provide known hosts values in sftp volume / repository creation 2026-03-31 20:27:48 +02:00
Kevin Stallone
aa7eaa0929 feat(volumes): add webdav, sftp, and rclone filters (#720)
* feat(volumes): add sftp, webdav, and rclone filters

* chore(volumes): align backend filter order with create-volume form
2026-03-31 20:27:43 +02:00
Nicolas Meienberger
b4668e23c7 test(e2e): attach browser logs and full errors in report 2026-03-24 07:52:54 +01:00
Nicolas Meienberger
4c928cbc33 refactor(client): configure time formatting with timezone from server 2026-03-24 07:52:54 +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
Nicolas Meienberger
ab25cc915e chore: color improvements in light mode 2026-03-09 19:05:51 +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
39469cb08b chore: improve ssr data loading 2026-02-28 16:47:02 +01:00
Nico
b2d2f28b40 style: redesign dashboard (#586)
style: redesign dashboard

style(tables): same height row in all pages
2026-02-26 19:57:39 +01:00
Nico
b916df7736 fix: form not correctly updating based on values (#572)
* fix: form not correctly updating based on values

Closes #549

* chore: pr review
2026-02-25 18:36:12 +01:00
Nico
8681ebc0c0 refactor: always use short id in api calls (#545) 2026-02-19 20:08:40 +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
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
99bb296866 fix: cascade delete not correctly applied (#531) 2026-02-16 21:36:07 +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
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
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
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
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
ef2d644146 refactor: format dates in a human-friendly way (#334) 2026-01-10 13:02:46 +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
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
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
Jakub Trávník
dccb38c70b corrected webdav default path to match placeholder 2025-12-22 15:39:05 +01:00
Jakub Trávník
ff9cfeda78 fix: add missing path property to webdav and rclone default values 2025-12-22 15:17:05 +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
47b3c80317 refactor(secret-input): remove isDirty check 2025-12-16 20:45:33 +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
Jakub Trávník
c4ec8ea62b secret reference frontend usage 2025-12-15 10:50:24 +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
Nicolas Meienberger
fdb84374a0 refactor: remove icons where it was making the context worse 2025-12-06 11:13:26 +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
0dfe000148 feat: rename volumes & repositories 2025-11-28 20:47:27 +01:00
Nico
b26a062648 refactor: use short ids to allow changing the name of volumes & repos (#67)
* 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
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