• 2026.9.7.1 a8ff10b712

    2026.9.7.1
    All checks were successful
    / pr-review (push) Has been skipped
    / gitleaks (push) Successful in 11s
    / pr-review (release) Has been skipped
    / gitleaks (release) Successful in 23s
    / checks (push) Successful in 1m42s
    / publish (push) Has been skipped
    / publish-container (push) Has been skipped
    / checks (release) Successful in 1m48s
    / deploy-docs (release) Has been skipped
    / publish (release) Successful in 30s
    / deploy-docs (push) Successful in 1m24s
    / publish-container (release) Successful in 2m33s
    Stable

    marvin8 released this 2026-09-07 07:57:24 +00:00 | 0 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.9.7.1] - 2026-09-07

    • Keep flag: protect events or single frames from retention cleanup with a button in the scrubber and day view

    Commits

    • 🔀 Merge branch 'feat/issue-144-keep-snapshots' 5a66cf9
    • 🐛 Assert on kept badge markup, not the CSS class name ac55663
    • ♻️ Extract scrubber row resolution to lower snapshot_album complexity 6603b06
    • 📝 Document the snapshot keep flag 72e0315
    • Add keep endpoint and scrubber/day-view toggle 8ca5cf2
    • Add keep column and retention skip 28dd472
    • Add failing tests for snapshot keep flag 01ea317
    Downloads
  • 2026.9.6.1 d8729216ff

    2026.9.6.1
    All checks were successful
    / pr-review (push) Has been skipped
    / gitleaks (push) Successful in 19s
    / pr-review (release) Has been skipped
    / gitleaks (release) Successful in 21s
    / checks (push) Successful in 1m52s
    / publish (push) Has been skipped
    / publish-container (push) Has been skipped
    / checks (release) Successful in 2m12s
    / deploy-docs (release) Has been skipped
    / deploy-docs (push) Successful in 1m26s
    / publish (release) Successful in 29s
    / publish-container (release) Successful in 3m18s
    Stable

    marvin8 released this 2026-09-05 20:54:20 +00:00 | 9 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.9.6.1] - 2026-09-06

    • Journey view: a movement across several cameras now appears as one event with a stitched cross-camera player

    Commits

    • 🔀 Merge branch 'feat/issue-146-cross-camera-journeys' 7470625
    • 📝 Update docs for unified journey scrubber b22c7ff
    • ♻️ Fold journey viewer into the snapshot scrubber 3c98371
    • 📝 correct Release Notes 5a10a71
    • ⬆️ bump deps 97ee143
    • 🐛 Highlight journey segment by snapshot id, not append order 7dd09e5
    • 📝 Move journey release note before install footer f6aff26
    • 📝 Document cross-camera journeys 9a3e14b
    • Add stitched journey viewer 36b0aef
    • Show cross-camera journeys in the day view 2c80660
    • Add journey_gap_seconds event config a0a31aa
    • Chain per-camera events into cross-camera journeys a856ab6
    Downloads
  • 2026.8.24.1 44229b73aa

    2026.8.24.1
    All checks were successful
    / pr-review (release) Has been skipped
    / gitleaks (release) Successful in 14s
    / pr-review (push) Has been skipped
    / gitleaks (push) Successful in 21s
    / checks (release) Successful in 2m11s
    / deploy-docs (release) Has been skipped
    / checks (push) Successful in 2m15s
    / publish (push) Has been skipped
    / publish-container (push) Has been skipped
    / publish (release) Successful in 32s
    / deploy-docs (push) Successful in 1m35s
    / publish-container (release) Successful in 3m0s
    Stable

    marvin8 released this 2026-08-24 03:53:49 +00:00 | 23 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.24.1] - 2026-08-24

    Downloads
  • 2026.8.12.4 81a4ea14eb

    2026.8.12.4
    All checks were successful
    / pr-review (push) Has been skipped
    / gitleaks (push) Successful in 18s
    / pr-review (release) Has been skipped
    / gitleaks (release) Successful in 17s
    / checks (push) Successful in 2m6s
    / publish (push) Has been skipped
    / publish-container (push) Has been skipped
    / checks (release) Successful in 2m18s
    / deploy-docs (release) Has been skipped
    / deploy-docs (push) Successful in 1m30s
    / publish (release) Successful in 37s
    / publish-container (release) Successful in 4m32s
    Stable

    marvin8 released this 2026-08-12 09:27:11 +00:00 | 26 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.12.4] - 2026-08-12

    • Split into two processes — cangcang (ingest daemon) and cangjian (web server) — fixing web UI hangs during periodic scans

    Commits

    • 🔀 Merge branch 'feat/issue-143-process-split' 95532e6
    • ⬆️ bump deps 640d6d4
    • 🐛 Fix duplicate .N suffix in Release-Notes template 59888eb
    • 📝 Document process split — cangcang + cangjian ed08396
    • 🔒 Harden deploy-docs token, fix container annotations, switch to CMD a1a7a34
    • 🔥 Remove cli.py and web/lifespan.py, update test imports 16fbd3f
    • 🔥 Remove lifespan from web app a7a9c4b
    • 🚚 Split console script into cangcang and cangjian 0ab94b8
    • Add cangjian web server entry point fcc919f
    • 🚚 Extract daemon logic from lifespan into daemon.py 7d2b0ec
    Downloads
  • 2026.8.12.3 bbbf89efa5

    2026.8.12.3
    All checks were successful
    / pr-review (push) Has been skipped
    / gitleaks (push) Successful in 14s
    / pr-review (release) Has been skipped
    / checks (push) Successful in 1m47s
    / publish (push) Has been skipped
    / publish-container (push) Has been skipped
    / checks (release) Successful in 1m47s
    / deploy-docs (push) Successful in 1m9s
    / gitleaks (release) Successful in 16s
    / deploy-docs (release) Has been skipped
    / publish (release) Successful in 26s
    / publish-container (release) Successful in 3m16s
    Stable

    marvin8 released this 2026-08-12 04:04:06 +00:00 | 38 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.12.3] - 2026-08-12

    Commits

    • 🔀 Merge branch 'fix/issue-140-141-regressions' 0091a2b
    • 🐛 Fix deploy-docs CI regex to accept 4-part micro-calver tags ae3803c
    • 🐛 Fix startup crash on shallow Dahua layout by using snapshot.date instead of path traversal 0662951
    Downloads
  • 2026.8.12.2 b030d73904

    2026.8.12.2
    Some checks failed
    / pr-review (push) Has been skipped
    / gitleaks (push) Successful in 14s
    / pr-review (release) Has been skipped
    / gitleaks (release) Successful in 18s
    / checks (push) Successful in 2m2s
    / publish (push) Has been skipped
    / publish-container (push) Has been skipped
    / checks (release) Successful in 1m45s
    / deploy-docs (release) Has been skipped
    / publish (release) Successful in 31s
    / deploy-docs (push) Failing after 1m7s
    / publish-container (release) Successful in 3m5s
    Stable

    marvin8 released this 2026-08-12 03:31:04 +00:00 | 43 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.12.2] - 2026-08-12

    • Support newer Dahua cameras with shallow folder layout (MM.SS filenames instead of MM/SS directories)

    Commits

    • 🔀 Merge branch 'feat/issue-137-micro-calver' 15c2bff
    • 🧱 Add micro component to calver versioning 99518a3
    • 🔀 Merge branch 'fix/issue-135-shallow-dahua-layout' 44d4d89
    • 📝 Document shallow Dahua folder layout in release notes and docs c7e2459
    • 🐛 Support shallow Dahua folder layout 07756bd
    Downloads
  • 2026.8.12 878b47533e

    2026.8.12
    All checks were successful
    / pr-review (push) Has been skipped
    / gitleaks (push) Successful in 13s
    / pr-review (release) Has been skipped
    / gitleaks (release) Successful in 16s
    / checks (push) Successful in 1m48s
    / publish (push) Has been skipped
    / publish-container (push) Has been skipped
    / checks (release) Successful in 1m49s
    / deploy-docs (push) Successful in 1m18s
    / deploy-docs (release) Has been skipped
    / publish (release) Successful in 26s
    / publish-container (release) Successful in 2m47s
    Stable

    marvin8 released this 2026-08-11 23:50:33 +00:00 | 50 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.12] - 2026-08-12

    • Fixed progressive web UI slowdown caused by SQLite WAL bloat; added a performance index for the calendar view

    Commits

    • 🔀 Merge branch 'fix/issue-132-wal-checkpoint-and-index' 020108c
    • 🔧 also update the release notes template to include version in doc url 7f16fa4
    • 🔧 fix order of posts in Release Notes 4e2ea10
    • 🔧 Complete fix of bumpversion to also update version in docs link c60cf81
    • 🔧 Fix bumpversion config, remove dead redirect.js, fix template sed a95218e
    • Revert wuming action pin — back to @main branch ref af7ef0d
    • 🔒 Pin wuming action to commit SHA instead of branch ref e717c33
    • 🔧 Finalize forge.marvin8.zone migration: update wuming and zaojun URLs a74d3f1
    • Add WAL checkpoint after periodic scan, busy_timeout, and recorded_at index 47f82c6
    Downloads
  • 2026.8.4 b3ae89979a

    2026.8.4
    All checks were successful
    / pr-review (push) Has been skipped
    / pr-review (release) Has been skipped
    / gitleaks (push) Successful in 24s
    / gitleaks (release) Successful in 16s
    / checks (push) Successful in 2m13s
    / publish (push) Has been skipped
    / publish-container (push) Has been skipped
    / checks (release) Successful in 2m4s
    / deploy-docs (release) Has been skipped
    / publish (release) Successful in 36s
    / publish-container (release) Successful in 3m1s
    / deploy-docs (push) Successful in 1m11s
    Stable

    marvin8 released this 2026-08-04 08:27:02 +00:00 | 61 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:B4Q+9pbWSIqGYTl3Ub/FPrBSqAVd2OkCR13hYRG5wek

    [2026.8.4] - 2026-08-04

    Commits

    • 🔀 Merge branch 'maint/issue-129-forge-migration-updates' 130818b
    • 📝 drop Docker Hub references — image only published to registry.marvin8.zone 728c172
    • 📝 refer to global AGENTS.md instead of CLAUDE.md 04fe262
    • ⬆️ bump pre-commit deps 025bc0f
    • 📝 point changelog commit links at forge.marvin8.zone e6c550b
    • ⬆️ bump deps 8f81fcc
    • 🚨 ignore PLR0917 in tests, matching existing PLR0913 ignore 477ff5f
    • 💄 point web UI source link at forge.marvin8.zone 27dea61
    • 📝 update docs, README badge, and project URLs to forge.marvin8.zone 9a47223
    • ⬆️ bump dev dependencies and align pre-commit hook revs dc3f163
    • 🔧 update OCI labels and justfile URLs to forge.marvin8.zone 61cefbb
    • 💚 point deploy-docs push and OCI annotations at forge.marvin8.zone 33705e9
    • 👷 run weekly checks on suanni runner 773a012
    Downloads
  • 2026.7.25 e0312aa9a1

    2026.7.25 Stable

    marvin8 released this 2026-07-25 03:03:36 +00:00 | 76 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:cyGOzvyFNw+A8J/LVjRif8v3KZLo8seQDVZbk/IhNhI

    [2026.7.25] - 2026-07-25

    • SQLite WAL mode, new indexes, and query optimizations eliminate login hangs during periodic scans and keep the scrubber responsive at high playback speeds.

    Commits

    • 🔀 Merge branch 'perf/issue-127-db-indexes-wal' 26784f5
    • 📝 Address review: targeted schema_version update, Release-Notes entry 342733e
    • 📝 Update docs URL to cang.marvin8.zone 1f73cfc
    • Enable WAL mode, add indexes, rewrite queries, serve images by ID 70c6ef1
    Downloads
  • 2026.7.24 b3f45955ef

    2026.7.24 Stable

    marvin8 released this 2026-07-23 23:21:24 +00:00 | 82 commits to main since this release

    Signed by marvin8
    SSH key fingerprint: SHA256:cyGOzvyFNw+A8J/LVjRif8v3KZLo8seQDVZbk/IhNhI

    [2026.7.24] - 2026-07-24

    • 💥 Breaking change: removed all video clip support. Cang is now a snapshot archiver.

    Commits

    • 🔀 Merge branch 'feat/issue-125-remove-video-support' 2ab42c6
    • 🔧 fix dependencies and ruff error on two methods b742bd2
    • 👌 format breaking change as bullet in release notes 792f986
    • 🚚 rename clips.py to days.py b54eaad
    • 📝 document manual cleanup of legacy clip files 8a1d255
    • 📝 update docs and metadata for snapshot archiver identity 53e631a
    • fix scrubber performance — remove interval recreation, optimize filmstrip 29e3dc3
    • 🔥 remove video clips from web UI 34048ec
    • 🔥 remove video clip support from adapters, config, storage, db, and migration f1657b2
    • 🔥 remove transcode pipeline and video file watching feb04f0
    • 🐛 Fix UV_VERSION grep escaping in publish-container job 130a44d
    • 💚 fix building and publishing container in ci f62e50f
    Downloads