Commit Graph
265 Commits
Author SHA1 Message Date
Antoine Lecompte 79c914c375 chore: remove the unused restic-api reference implementation (#684) 2026-09-15 13:08:31 +00:00
renovate[bot] 813fe2f9fc chore(deps): update ghcr.io/jdx/mise docker tag to v2026.9.9 (#677)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-15 13:39:46 +01:00
renovate[bot] 6e256985cf fix(deps): update module github.com/go-chi/chi/v5 to v5.3.2 (#674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-15 13:39:25 +01:00
renovate[bot]andZack 68a083f954 fix(deps): update module github.com/cloudwego/eino to v0.9.19 (#673)
* fix(deps): update module github.com/cloudwego/eino to v0.9.19

* fix(deps): tidy columbo go.sum for eino v0.9.19

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zack <zack@futo.org>
2026-09-15 13:39:03 +01:00
Zack Pollard 7893405621 chore(deps): bump prettier to 3.9.6 (#682) 2026-09-15 12:52:24 +01:00
renovate[bot] be23665de9 chore(deps): update golang:1.27-alpine3.23 docker digest to d9e2f2f (#625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-15 08:53:09 +01:00
renovate[bot] 90d35e7292 fix(deps): update module go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp to v1.43.0 [security] (#71)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-15 02:00:46 +01:00
renovate[bot] 1ee44c0c54 chore(deps): update alpine docker tag to v3.24 (#139)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-15 01:03:18 +01:00
renovate[bot] 2231db7b2b fix(deps): update aws-sdk-go-v2 monorepo (#468)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-14 23:59:12 +01:00
renovate[bot] 27f53bccb4 chore(deps): update ghcr.io/jdx/mise docker tag to v2026.9.8 (#472)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-14 23:58:54 +01:00
Antoine Lecompte 29a0b653e9 fix(ci): de-flake the e2e job (loop-device image, fail-fast wait, diagnostics, hook timeout) (#621) 2026-09-14 23:36:27 +01:00
immich-push-o-matic[bot] 64b8a63d95 chore(main): release 0.43.0 (#668) 2026-09-14 17:54:13 +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
immich-push-o-matic[bot] 49ba857a5e chore(main): release 0.42.0 (#662) 2026-09-14 16:42:57 +01:00
Antoine Lecompteandizzy 0bfca45a5b fix(yucca sdk): surface the state database path and guard master key generation (#653)
Co-authored-by: izzy <me@insrt.uk>
2026-09-14 16:41:42 +01:00
Zack Pollard 5a144405cf feat(docs): end-user documentation site at docs.futo.cloud (#623)
packages/docs is a SvelteKit site where every page is a +page.md compiled
by @immich/svelte-markdown-preprocess into @immich/ui components, deployed
to Cloudflare Pages the way static-pages deploys the immich.app sites
(tf/pages/docs; main -> docs.futo.cloud, every PR gets a preview).

The content is written for beta users: joining the beta, setting up in
Immich or the standalone container, the recovery key, backups, schedules,
restores, the account dashboard, troubleshooting and support. Internal and
developer documentation stays in docs/ and the per-directory READMEs.
2026-09-14 07:41:44 -07:00
Devin Buhl ef1a5a68d9 fix(otel): export metrics every 10s and honour the otel env knobs (#658)
Signed-off-by: Devin Buhl <devin@buhl.casa>
2026-09-14 09:13:00 -04:00
immich-push-o-matic[bot] 7b1c3d7590 chore(main): release 0.41.0 (#655) 2026-09-14 08:32:47 -04:00
Antoine Lecompte 0b15733005 fix(michael): drain in-flight restic requests before closing the listener on rollout (#660) 2026-09-14 08:30:44 -04:00
Antoine Lecompteandizzy a744273730 fix(yucca sdk): report interrupted backup runs to the backend on restart (#651)
Co-authored-by: izzy <me@insrt.uk>
2026-09-14 13:05:36 +01:00
Paul Makles 42a932406c feat: first batch of closed beta improvements (#657) 2026-09-14 12:32:37 +01:00
Andy Molenda 5626011081 fix(monk): stop cleanly on SIGTERM and drop a per-PG map allocation (#646)
fix(monk): shut down cleanly on SIGTERM and drop the per-PG map allocation
2026-09-11 09:30:39 -07:00
Andy Molenda 5cafca4853 feat(monk): measure scrub lateness and mirror the mgr not-scrubbed check (#644)
* feat(monk): measure scrub lateness against ceph's schedule and the mon warn deadline

* fix(monk): measure lateness past ceph's latest scrub target

* fix(monk): withhold late and breach until the first config read

* fix(monk): gate late and breach on the snapshot's config source
2026-09-11 09:23:46 -07:00
immich-push-o-matic[bot] 1b00d89432 chore(main): release 0.40.2 (#640) 2026-09-11 09:17:48 -04:00
Antoine Lecompte dcf3065fee fix(michael): answer GET of a missing blob or config with 404, not 500 (#650) 2026-09-11 08:49:06 -04:00
immich-push-o-matic[bot] edfe1c9aaa chore(main): release 0.40.1 (#638) 2026-09-10 13:40:26 +01:00
Paul Makles 1e4e1b0612 fix: zod 4.4.3 - explicit defaults for coerce.boolean (#637) 2026-09-10 13:34:00 +01:00
immich-push-o-matic[bot] 58b1c0418b chore(main): release 0.40.0 (#635) 2026-09-10 11:15:31 +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
immich-push-o-matic[bot] 59f2eaf84d chore(main): release 0.39.0 (#609) 2026-09-09 07:05:55 -04: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
Devin Buhl b03e7d1c93 ci: use official mise action and lock tools for linux/macos x64/arm64 (#624)
Signed-off-by: Devin Buhl <devin@buhl.casa>
2026-09-03 09:36:36 -04: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
Andy Molenda b9d60c667f feat(monk): count scrub completions and track omap bytes (#617)
Backlog size and age answer how far behind the cluster is; nothing answered how fast it drains. Ceph exports no per-PG completion counter, and the old dashboard approximated pace from OSD scrub read-byte counters, which mixed raw bytes with logical ones and counted a re-scrub of the same PG as progress.

monk now diffs each PG's stamp against the previous refresh and counts the PGs and bytes that actually completed a scrub. A PG missing from either side is skipped rather than counted, so pool deletion and PG splits do not register as completions, and the first refresh after start has no predecessor so the counters simply begin at zero.

These are counters, so they dedup differently from the gauges: rate first, then `max by (cluster, pool_id)`. Taking `max` across instances before `rate` would read an instance restart as a jump, because the five instances start at different times and each counts independently. The README carries that rule and the time-to-clear query.

Also tracks omap apart from data bytes. `stat_sum.num_bytes` excludes omap, so `prod-z1.rgw.buckets.index` reports zero bytes while holding 164 GB across 524M keys on spice: every one of its PGs could go overdue without moving byte-weighted coverage. Existing metrics keep their meaning and `ceph_scrub_pool_bytes` still matches `ceph_pool_stored`; the omap figures are additive.

- `main` <!-- branch-stack -->
  - \#617 :point\_left:
2026-09-01 14:33:22 -07:00
immich-push-o-matic[bot] cf3795a196 chore(main): release 0.38.0 (#538) 2026-09-01 07:00:32 -04:00
Paul Makles a08e47ff8a fix: align migrations to actual schema & correct migrations task (#608) 2026-09-01 11:41:17 +01:00
Antoine Lecompte 7750b71620 fix(futo-backups-bot): ignore interactions from other guilds (#602) 2026-08-31 15:42:57 -07:00
Antoine Lecompte bb0cd74bee feat(columbo): give the agent fixed fleet-health probes and a bigger tool budget (#600) 2026-08-31 16:10:02 -04:00
Antoine Lecompte 8e9cd64c16 feat(columbo): retry model calls with per-attempt deadlines (#598) 2026-08-31 11:28:12 -07:00
Andy Molenda 16d9c700ce fix(monk): harden failure paths, exec handling, and the metric contract (#592)
* fix(monk): harden failure paths, exec handling, and the metric contract

* fix(monk): log collection state transitions, not every failing refresh

* fix(monk): correct exec cancellation, waitdelay scope, and log levels
2026-08-31 06:26:57 -07:00
Antoine Lecompte ce32472f89 fix(michael): log the resolved route plus op and blob_type on access lines (#597) 2026-08-31 08:38:17 -04:00
Antoine Lecompte 500107b5ce feat(columbo): triage-refusal staff notes + per-user telemetry catalog (#596) 2026-08-31 08:38:05 -04:00
Andy Molenda 919398b0c9 feat(monk): add monk, a measured ceph scrub-backlog exporter (#587)
* feat(monk): add monk, a measured ceph scrub-backlog exporter

* fix(monk): harden collection failure paths

* docs(monk): defer the deploy role reference to its follow-up PR

* fix(monk): emit the age distribution as a real histogram and document operational contracts

* feat(monk): read overdue targets from the cluster instead of flags

* ci(monk): register the monk image build filter

* chore(monk): cut comments the types already carry
2026-08-28 14:55:11 -07:00
Andy Molenda e2a7f657a8 test(yucca-admin-api): expect discordLink in the single-user response (#590) 2026-08-28 13:11:29 -07:00
Antoine Lecompte b3aa57dc5d feat(columbo): per-investigation audit log, tool-error recovery, pipe-aware log scoping (#586) 2026-08-28 13:57:28 -04:00
Antoine Lecompte 88267dc1f7 feat(columbo): add columbo (#585) 2026-08-28 13:26:11 -04:00