Commit Graph
100 Commits
Author SHA1 Message Date
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