Commit Graph
34 Commits
Author SHA1 Message Date
renovate[bot] 4b280718ef chore(deps): update dependency @vitest/browser to v4.1.8 [security] (#112) 2026-06-26 10:58:28 +00:00
renovate[bot] 83f3d15934 chore(deps): update dependency vite to v7.3.5 [security] (#127) 2026-06-26 10:55:09 +00:00
renovate[bot] bf6d907f0d chore(deps): update dependency @nestjs/core to v11.1.18 [security] (#66) 2026-06-26 10:54:51 +00:00
renovate[bot] 73463cd42f chore(deps): update dependency restic to v0.19.0 (#104) 2026-06-19 10:34:22 +00:00
Paul Makles faa288087d feat: metrics worker (radosgw ingest) (#123) 2026-06-17 14:16:28 +01:00
renovate[bot] b7d2515750 chore(deps): update dependency @sveltejs/kit to v2.57.1 [security] (#52) 2026-06-02 15:49:04 +00:00
renovate[bot] 183ee00c7b chore(deps): update dependency vite to v7.3.2 [security] (#67) 2026-06-02 15:43:35 +00:00
renovate[bot] 35d3cd34ef chore(deps): update dependency @opentelemetry/sdk-node to ^0.217.0 [security] (#88) 2026-06-02 15:29:35 +00:00
renovate[bot] 6aaccb6b93 chore(deps): update dependency svelte to v5.55.7 [security] (#53) 2026-06-02 15:28:43 +00: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 1f3ee2b5e6 feat: admin API (#106) 2026-05-29 13:33:04 +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 aac91631a9 feat: device code flow (#93)
Signed-off-by: izzy <me@insrt.uk>
2026-05-14 13:03: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 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 79a7e9c274 refactor: use TanStack Query (#61) 2026-04-09 18:16:48 +01:00
Paul Makles 990b016d89 refactor: cleaning up again (#60) 2026-04-09 18:12:57 +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 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 957c3f8a6c feat: yucca SDK (#36) 2026-02-18 15:20:33 +00:00
Paul Makles a96010e181 refactor: general repository clean-up (#35) 2026-02-18 15:15:28 +00:00
Paul Makles 6dee4843d6 feat(customer API): repository API (#31) 2026-02-18 15:07:37 +00:00
Paul Makles 2e288c2d08 feat(customer portal): OIDC login (#30) 2026-02-18 14:54:18 +00:00
Paul Makles c568a50687 feat: configure OpenTelemetry (#29) 2026-02-18 14:49:31 +00:00
Paul Makles c06ae1a2e9 refactor: create library for common server components (#28)
* feat: initial commit (mise, nest, restic-api)

* ci: should use new nested tasks

* chore: use absolute imports

* chore: format

* fix: absolute imports for jest

* feat: REST API impl. with in-memory storage

* feat: s3 storage backing (wip)

* fix: use Range in S3 get object

* feat: validate path parameters

* chore: clean up checks

* chore: remove TODO

* docs: add descriptions to mise commands

* feat: JWT auth

* feat: load secrets from env (validate w. zod)

* chore: set default compose variables

* chore: add docker commands to mise

* fix: don't eat JWT errors

* fix: obfuscate s3 errors

* chore: validate auth schema

* feat: commit errors.ts

* fix: return partial status if Range provided

* chore: split jwt/payload validation errors

* fix: check name is a sha256 hash

* feat: streaming download

* feat: streaming upload

* feat: WORM / write once support

* fix: don't obscure other S3 errors for checkBucket

* refactor: more concise error types

* test: service unit tests for app/auth; e2e for storage

* chore: prettier ignore .dev folder

* feat: interceptor for Restic JSON routes

* test: app e2e tests (wip)

* test: partial content response

* chore: lint

* refactor: use class-validator for auth dto

* refactor: clean up constants through project

* refactor: also update binary content type

* fix: incorrect Basic parsing

* fix: actually handle validation errors in auth dto

* chore: delete .gitignore

* fix: should use 403 not 405 in worm

* chore: expose minio console for debug

* feat: delete config route

* fix: error consistency with restic reference

* feat: validate sha256 on blob upload

* fix: use bad request exception for mismatch

* feat: initial work on full e2e test

* fix: respond with correct headers for Range
refactor: unify respond logic

* test: backup & restore e2e test

* feat: setup empty yucca-api project

* feat: setup kysely for yucca-api & db repository

* refactor: `utils.ts` -> `utils/s3.ts`

* fix: shut down database after e2e test

* chore: remove stray log

* test: refactor getObject test

* chore: add built wrapper for now

* chore: add e2e/ to mise task

* chore: format

* fix: esm jest

* feat: setup database migrator

* feat: minimal template for frontend project

* chore: add prettier-plugin-tailwindcss to workspace

* chore: configure @immich/ui

* feat: sdk for web, hook up sample

* chore: add @oazapfts/runtime dependency

* chore: ignore `yucca-sdk/src/fetch-client.ts` from eslint

* chore: format

* chore: move all CI check stages into mise config

* test: mock $env/dynamic/publish for ui library

* chore: format code

* fix: correct restic API port in e2e test

* chore: move tasks around

* chore: use restic-wrapper from npm

* chore: string

* test: comprehensive e2e tests for restic API

* test: cover new commands in e2e tests

* test: worm-case for prune

* feat: lingui for svelte

* chore: ensure check runs lingui

* chore: ignore locales from checks

* chore: format/lint

* chore: configure nix-ld for mise

* chore: move `env.ts` to common package

* chore: accept any no. of arguments for docker tasks/e2e

* chore: different strategy for e2e clean up

* chore: configure Git Town

Signed-off-by: izzy <me@insrt.uk>

* chore: add default.nix for mise

Signed-off-by: izzy <me@insrt.uk>

* chore: lost changes from parent

Signed-off-by: izzy <me@insrt.uk>

* fix: use valid language code

* chore: ignore migration errors in dev

* fix: apply fixes to @common/server (again)

* fix: wait for common:build

---------

Signed-off-by: izzy <me@insrt.uk>
2026-01-27 14:04:32 +00:00
Paul Makles 0b99068f23 feat: initial commit (#27)
* feat: initial commit (mise, nest, restic-api)

* ci: should use new nested tasks

* chore: use absolute imports

* chore: format

* fix: absolute imports for jest

* feat: REST API impl. with in-memory storage

* feat: s3 storage backing (wip)

* fix: use Range in S3 get object

* feat: validate path parameters

* chore: clean up checks

* chore: remove TODO

* docs: add descriptions to mise commands

* feat: JWT auth

* feat: load secrets from env (validate w. zod)

* chore: set default compose variables

* chore: add docker commands to mise

* fix: don't eat JWT errors

* fix: obfuscate s3 errors

* chore: validate auth schema

* feat: commit errors.ts

* fix: return partial status if Range provided

* chore: split jwt/payload validation errors

* fix: check name is a sha256 hash

* feat: streaming download

* feat: streaming upload

* feat: WORM / write once support

* fix: don't obscure other S3 errors for checkBucket

* refactor: more concise error types

* test: service unit tests for app/auth; e2e for storage

* chore: prettier ignore .dev folder

* feat: interceptor for Restic JSON routes

* test: app e2e tests (wip)

* test: partial content response

* chore: lint

* refactor: use class-validator for auth dto

* refactor: clean up constants through project

* refactor: also update binary content type

* fix: incorrect Basic parsing

* fix: actually handle validation errors in auth dto

* chore: delete .gitignore

* fix: should use 403 not 405 in worm

* chore: expose minio console for debug

* feat: delete config route

* fix: error consistency with restic reference

* feat: validate sha256 on blob upload

* fix: use bad request exception for mismatch

* feat: initial work on full e2e test

* fix: respond with correct headers for Range
refactor: unify respond logic

* test: backup & restore e2e test

* feat: setup empty yucca-api project

* feat: setup kysely for yucca-api & db repository

* refactor: `utils.ts` -> `utils/s3.ts`

* fix: shut down database after e2e test

* chore: remove stray log

* test: refactor getObject test

* chore: add built wrapper for now

* chore: add e2e/ to mise task

* chore: format

* fix: esm jest

* feat: setup database migrator

* feat: minimal template for frontend project

* chore: add prettier-plugin-tailwindcss to workspace

* chore: configure @immich/ui

* feat: sdk for web, hook up sample

* chore: add @oazapfts/runtime dependency

* chore: ignore `yucca-sdk/src/fetch-client.ts` from eslint

* chore: format

* chore: move all CI check stages into mise config

* test: mock $env/dynamic/publish for ui library

* chore: format code

* fix: correct restic API port in e2e test

* chore: move tasks around

* chore: use restic-wrapper from npm

* chore: string

* test: comprehensive e2e tests for restic API

* test: cover new commands in e2e tests

* test: worm-case for prune

* feat: lingui for svelte

* chore: ensure check runs lingui

* chore: ignore locales from checks

* chore: format/lint

* chore: configure nix-ld for mise

* chore: accept any no. of arguments for docker tasks/e2e

* chore: different strategy for e2e clean up

* chore: configure Git Town

Signed-off-by: izzy <me@insrt.uk>

* chore: add default.nix for mise

Signed-off-by: izzy <me@insrt.uk>

* chore: lost changes from parent

Signed-off-by: izzy <me@insrt.uk>

* fix: use valid language code

---------

Signed-off-by: izzy <me@insrt.uk>
2026-01-27 13:46:14 +00:00