Paul Makles
c473a911c4
fix(yucca sdk): tsconfig for api tests ( #706 )
...
fix(yucca sdk): tsconfig for api
test: update lint issues in tests
2026-09-23 12:17:28 +01:00
Paul Makles
5efc3664a4
feat(yucca sdk): warn users if immich db dumps enabled ( #703 )
...
* feat(yucca sdk): add hooks for Immich database dump config
* feat(yucca sdk): warn users when immich db dump in use
2026-09-23 11:34:24 +01:00
Paul Makles
d88d888c01
feat(yucca sdk): hook db dump clean up for Immich ( #702 )
2026-09-23 11:34:24 +01:00
Paul Makles
68a20238c6
feat: throttle upload bandwidth (and disable during quiet hours) ( #700 )
2026-09-23 11:02:00 +01:00
Paul Makles
e3c650c01d
feat: second batch of feedback changes ( #694 )
2026-09-18 13:02:54 +01:00
Paul Makles
1922ca2101
fix: correct openapi contracts ( #692 )
2026-09-17 14:46:15 +01:00
Paul Makles
d9f928914e
feat(api): store backup outcome instead of success time ( #691 )
2026-09-16 14:02:22 +01:00
Paul Makles
35f6ad2bed
feat(yucca sdk): set/change immich repository ( #666 )
2026-09-16 12:35:00 +01:00
Paul Makles
249d91e87e
feat(yucca sdk): log on bootstrap ( #667 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-09-14 17:51:08 +01:00
Paul Makles
42a932406c
feat: first batch of closed beta improvements ( #657 )
2026-09-14 12:32:37 +01:00
Paul Makles
1e4e1b0612
fix: zod 4.4.3 - explicit defaults for coerce.boolean ( #637 )
2026-09-10 13:34:00 +01:00
Paul Makles
eed66845c8
feat: use zod for validation ( #636 )
2026-09-10 11:13:02 +01:00
Paul Makles
87e0066ff2
fix: more types that should be integers ( #634 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-09-09 12:33:01 +01:00
Paul Makles
7a04d36482
fix: explicitly mark keepLast as an integer ( #632 )
2026-09-09 10:45:45 +00:00
Paul Makles
037745c682
feat: use restic proxy in orchestrator when available ( #631 )
2026-09-09 11:02:19 +01:00
Paul Makles
312062e33c
feat: standalone app login & work around Zitadel race condition ( #556 )
2026-09-03 13:35:35 +01:00
Paul Makles
f31f9be024
feat: destructive actions - delete repos & disable write-only ( #607 )
2026-09-03 13:02:52 +01:00
Paul Makles
76d48c26b4
feat: restic proxy ( #611 )
...
* feat(restic proxy): initial commit
* feat(restic proxy): working impl.
* fix(restic proxy): use repoId as grant key
* fix(restic proxy): handle http errors for meta
* fix(restic proxy): close http response body
* fix(restic proxy): use path not encoded path
* fix(restic proxy): unset RawPath
* docs(restic proxy): notes for later work
* fix(restic proxy): timeout on meta requests
* fix(restic proxy): concurrent minting
* fix(restic proxy): don't nil error
* fix(restic proxy): robust claims/exp check
* docs(restic proxy): document next work
* fix(restic proxy): respect log level
* chore(restic proxy): set default log level to info
* fix(restic proxy): permit temporary failures
* refactor(restic proxy): remove exit dead code
* chore: mise config
* feat(restic proxy): configurable well known URL
* chore(restic proxy): use real Exp
* refactor(restic proxy): use username as repoId
* fix(restic proxy): check repositoryId is set
* test(restic proxy): generate tests
* feat(restic proxy): publish Dockerfile
* feat(standalone app): include restic-proxy binary
* refactor(restic proxy): allow configuring api & meta URLs
test: generate accompanying tests
* chore: set config_roots
* test: drop comments from generated tests
* docs(restic proxy): add to USER_MANUAL
* fix(restic proxy): remint grant if auth token changes
* chore(restic proxy): update mise.toml
* refactor(restic proxy): differentiate session token w. 'token'
feat(restic proxy): denial cache
test(restic proxy): update generated tests for deny cache
* chore: remove `restic-proxy:check` from `check` dependencies (covered by
lint)
2026-09-02 16:37:31 +01:00
Paul Makles
f8497b8033
feat: enable mise mono repo ( #612 )
...
* feat: enable mise mono repo
* fix: set config_roots
* ci: update mise action for software/publish
* chore: generate mise.lock
* ci: only update `ci.yml` with mise 2026.8.6 (no lock)
* ci: prefer `mise run`
2026-09-02 16:37:31 +01:00
Paul Makles
a08e47ff8a
fix: align migrations to actual schema & correct migrations task ( #608 )
2026-09-01 11:41:17 +01:00
Paul Makles
8832cda5c0
feat: 'standalone' connection type ( #534 )
2026-08-24 11:30:36 +01:00
Paul Makles
f91b803356
feat(yucca sdk): improve onboarding & path selection ( #521 )
2026-08-24 05:20:48 -05:00
Paul Makles
4ddc8e4666
feat(yucca sdk): warn status for backups ( #520 )
2026-08-24 05:08:03 -05:00
Paul Makles
2d0fb98666
feat: UI redesign (pt. 2) ( #477 )
2026-08-14 19:48:54 +01:00
Paul Makles
541e995fa4
fix: bump restic version in test ( #473 )
2026-08-12 21:04:20 +01:00
Paul Makles
2bae945404
feat: new immich nav item, snippet FAQ answers, user manual ( #467 )
2026-08-07 14:35:14 +01:00
Paul Makles
b23e7b3276
feat: standalone app ( #422 )
...
* feat: standalone futo backups
* chore: use global settings for standalone ui
* chore: hide install immich on local
* feat: port immich dark mode mechanism
* fix: bump @immich/ui version in lockfile
* fix: missing dependency from standalone app
2026-08-06 11:49:25 +01:00
Paul Makles
f79eeea9b8
feat: UI redesign (part 1) ( #423 )
...
* feat: redesign UI (first pass)
* feat: export upsell modal
* feat: immich nav btns & onboarding with upsell
* feat: use new onboarding steps
* refactor: dashboard
* feat: full page run history & snapshots list
* chore: missing data
* feat: scaffold settings page
* feat: new settings impl.
* chore: drop useless comment
* docs: document css hacks
* refactor: `StackList` -> `StackList`/`StackListPlaceholder`
* refactor: `OnboardingStepLayout.actions` prop
* docs: document that pwd manager prompt is hidden
* docs: document cron limitations in current ui
* refactor: move schedule settings into immich
fix: actually pause/unpause immich schedule
* refactor: split `StackListItem` into `StackListItem`/`StackListOption`
* chore: attempt to fix svelte checks
* fix: do not drop imported key in onboarding flow
* fix: write worm value
2026-08-06 11:49:24 +01:00
Paul Makles
f6a7dd9d9d
fix(yucca sdk): include task and logId for restore ( #349 )
2026-07-27 16:57:14 +00:00
Paul Makles
661cc6d0ad
feat: store backup file name in tags ( #348 )
2026-07-27 16:42:10 +00:00
Paul Makles
b3cafa2495
fix(yucca sdk): export ViewLogModal ( #337 )
2026-07-27 10:36:17 +00:00
Paul Makles
9b565ebe1f
fix: throw not found exception when item missing ( #318 )
2026-07-24 10:46:12 +00:00
Paul Makles
2f8f060fd0
chore: set maintenance jwt & expose restoreSnapshot from module ( #317 )
2026-07-24 09:54:38 +00:00
Paul Makles
4cbdde3ac5
feat(yucca sdk): hooks for creating db dump & performing rollback ( #309 )
2026-07-23 11:06:40 +00:00
Paul Makles
ad45113b11
refactor(yucca sdk): device flow error handling ( #265 )
2026-07-22 17:11:08 +00:00
Paul Makles
95622ad482
refactor: ignore invalid byte counter (if specified) ( #266 )
2026-07-22 17:10:47 +00:00
Paul Makles
6f88b578f5
feat(yucca sdk): pin rest connections to 'availableParallelism' ( #264 )
2026-07-22 17:09:37 +00:00
Paul Makles
4beb3c7f91
refactor: use existing formatDuration & omit at "100%" ( #254 )
2026-07-13 12:33:10 +00:00
Paul Makles
a6146e9b73
fix: invert restore snapshot disabled check ( #211 )
2026-06-26 18:11:32 +00:00
Paul Makles
ce09c1987f
refactor: export one service instead of repositories ( #207 )
2026-06-26 17:29:27 +01:00
Paul Makles
b8f361da89
refactor: polish for immich integration ( #205 )
2026-06-26 15:44:10 +00:00
Paul Makles
3ab42dea5c
ci: drop package name for release-please ( #190 )
2026-06-26 10:43:12 +00:00
Paul Makles
1d94bebcdc
fix: missing GatewayEvent export ( #162 )
2026-06-25 12:46:23 +00:00
Paul Makles
4956b5105b
fix: package imports for orchestrator api ( #160 )
2026-06-25 12:04:47 +00:00
Paul Makles
3e9f844c8e
chore: general clean up ( #134 )
2026-06-22 13:37:21 +00:00
Paul Makles
65b585a435
feat: use .well-known/yucca.json to discover backend ( #126 )
2026-06-18 18:21:09 +01:00
Paul Makles
27d1ac10c2
feat: telemetry & start up error reporting / robustness ( #132 )
2026-06-18 16:19:11 +00:00
Paul Makles
64b5fa7897
fix: add package metadata for provenance ( #130 )
2026-06-17 14:03:51 +00:00
Paul Makles
18c5e6e1f0
ci: combine release please components with root ( #129 )
2026-06-17 13:32:54 +00:00
Paul Makles
faa288087d
feat: metrics worker (radosgw ingest) ( #123 )
2026-06-17 14:16:28 +01:00
Paul Makles
10c0a3b39c
feat: reconfigure primary repository backend ( #118 )
2026-06-15 13:39:19 +00:00
Paul Makles
fcecc8dc20
fix: include python3 in Nix flake, needed for Tilt ( #122 )
2026-06-15 13:39:16 +00:00
Paul Makles
6bce03d888
refactor: another general clean-up & tests ( #111 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-06-02 15:54:12 +01:00
Paul Makles
7b71eecbac
chore: publish npm packages ( #110 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-06-02 14:53:48 +00:00
Paul Makles
32446577f8
fix: mark incomplete runs as failed on bootstrap ( #108 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-29 13:33:30 +00:00
Paul Makles
1f3ee2b5e6
feat: admin API ( #106 )
2026-05-29 13:33:04 +00:00
Paul Makles
1faaf4329e
refactor: customer portal w. metrics history ( #107 )
2026-05-29 13:33:01 +00:00
Paul Makles
9aa444b599
chore: automatically remove restic locks ( #109 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-29 13:33:00 +00:00
Paul Makles
86fff0f425
fix: demo padding ( #103 )
2026-05-20 14:50:50 +00:00
Paul Makles
a701189455
refactor: use mutations for form modal UX ( #102 )
2026-05-20 14:48:42 +00:00
Paul Makles
e6a5bc7569
refactor: show snapshot details in restore flow ( #101 )
2026-05-20 14:46:56 +00:00
Paul Makles
2cc0d11b55
refactor: recovery key import/view ( #100 )
2026-05-20 14:45:13 +00:00
Paul Makles
862526682d
chore: force include database backups ( #99 )
2026-05-20 14:40:05 +00:00
Paul Makles
fd866ade32
refactor: save preset as json in db ( #98 )
2026-05-20 15:38:21 +01:00
Paul Makles
740affcbe1
ci: timeout waiting for services ( #97 )
2026-05-20 13:32:18 +00:00
Paul Makles
e703b08b83
feat: backup retention ( #89 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 13:20:11 +01:00
Paul Makles
ef20b45a2d
refactor: prepare npm packages ( #95 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 13:09:36 +01:00
Paul Makles
b0d8f2c353
feat: immich integration UX ( #87 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 13:07:59 +01:00
Paul Makles
a20f02fcda
refactor: metrics review changes ( #94 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 13:05:12 +01:00
Paul Makles
aac91631a9
feat: device code flow ( #93 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 13:03:14 +01:00
Paul Makles
e06b3ad2b4
chore: env changes ( #92 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 13:00:28 +01:00
Paul Makles
70fd11fb17
feat: asymmetric jwt ( #91 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 12:56:38 +01:00
Paul Makles
df9640687e
chore: repo changes ( #90 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 12:55:45 +01:00
Paul Makles
aa0a3464a8
feat: sync metrics to customer API ( #84 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 12:52:45 +01:00
Paul Makles
c515670146
refactor: general clean-up (4) ( #83 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 12:51:14 +01:00
Paul Makles
415bb7860f
feat: cancel running tasks (& node:fs repository refactor) ( #81 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 12:49:04 +01:00
Paul Makles
c64e90c7f1
feat(yucca api): configurable JWT expiry ( #80 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 12:47:51 +01:00
Paul Makles
42635f4c30
fix: use repo metrics as source of truth for immich integration card ( #79 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-05-14 12:35:21 +01:00
Paul Makles
6ef94e355c
feat: configure schedule repositories ( #78 )
...
* refactor: split restore point flow into stage per component
fix: hook into TaskEnd instead of log completion
* chore: permit orchestrator reset
* chore: misc.
* feat: create local backend
* fix: build kysely async
* fix: re-bootstrap after restore
* chore: use provided redirect_uri
* chore: provide redirect uri
* feat: Dockerfile for michael
* feat: prompt for immich setup
* chore: bump version
Signed-off-by: izzy <me@insrt.uk >
* feat: create local backend
* refactor: add developmentMode flag for module
* fix: skip import step for other two cases
* feat: configure schedule repositories
* chore: enable developmentMode for local dev server
* chore: format
---------
Signed-off-by: izzy <me@insrt.uk >
2026-05-13 14:47:25 +01:00
Paul Makles
e57db5ef19
feat: immich integration (& assorted fixes) ( #77 )
...
* refactor: split restore point flow into stage per component
fix: hook into TaskEnd instead of log completion
* chore: permit orchestrator reset
* chore: misc.
* feat: create local backend
* fix: build kysely async
* fix: re-bootstrap after restore
* chore: use provided redirect_uri
* chore: provide redirect uri
* feat: Dockerfile for michael
* feat: prompt for immich setup
* chore: bump version
Signed-off-by: izzy <me@insrt.uk >
* feat: create local backend
* refactor: add developmentMode flag for module
* fix: skip import step for other two cases
* chore: enable developmentMode for local dev server
* chore: format
---------
Signed-off-by: izzy <me@insrt.uk >
2026-05-13 14:46:50 +01:00
Paul Makles
56cc03e310
refactor: split restore point flow into stage per component ( #72 )
2026-05-13 13:38:43 +00:00
Paul Makles
9303cc1f79
feat: Dockerfile for michael ( #76 )
2026-04-24 12:28:06 +00:00
Paul Makles
712a4aaf5a
refactor: general clean up (3) ( #68 )
2026-04-09 19:07:01 +01:00
Paul Makles
ccdcf37ebb
feat: Immich integration ( #65 )
2026-04-09 18:21:45 +01:00
Paul Makles
1d1e4d0136
refactor: cleaning up (2) ( #64 )
2026-04-09 18:19:27 +01:00
Paul Makles
79a7e9c274
refactor: use TanStack Query ( #61 )
2026-04-09 18:16:48 +01:00
Paul Makles
e11a6546d3
feat: restore backups ( #62 )
2026-04-09 18:14:40 +01:00
Paul Makles
990b016d89
refactor: cleaning up again ( #60 )
2026-04-09 18:12:57 +01:00
Paul Makles
b9aafefc21
feat: import repositories ( #59 )
2026-04-09 18:05:43 +01:00
Paul Makles
48e468d69d
feat: schedule database backups ( #58 )
2026-04-09 18:03:16 +01:00
Paul Makles
9b0d2e62e3
feat: repository backend ( #49 )
2026-04-09 18:01:37 +01:00
Paul Makles
4b42484dee
refactor: use @immich/sql-tools for schema ( #50 )
2026-04-09 17:57:34 +01:00
Paul Makles
28636f9670
refactor(yucca sdk): delegate to customer API OIDC flow ( #48 )
2026-04-09 17:57:14 +01:00
Paul Makles
521c1931ec
feat: key flow modal ( #44 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-02-19 10:55:03 +00:00
Paul Makles
ce6b352953
feat: 'bytes stored' metric ( #45 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-02-19 10:54:37 +00:00
Paul Makles
6b1168593d
fix: redirect to / on login & un-delete migration ( #43 )
...
Signed-off-by: izzy <me@insrt.uk >
2026-02-18 17:20:57 +00:00
Paul Makles
e383fbaea0
feat(yucca sdk): sqlite database for configuration ( #42 )
2026-02-18 15:42:10 +00:00
Paul Makles
e5981e71fc
feat(yucca sdk): add authentication handoff ( #39 )
2026-02-18 15:22:51 +00:00
Paul Makles
c7f78f3735
fix: chunked uploads fail checksum checks ( #38 )
2026-02-18 15:21:51 +00:00
Paul Makles
957c3f8a6c
feat: yucca SDK ( #36 )
2026-02-18 15:20:33 +00:00