-
2026.7.23 Stable
released this
2026-07-22 21:27:10 +00:00 | 96 commits to main since this release[2026.7.23] - 2026-07-23
- Container images are now published to
registry.marvin8.zone/marvin8/canginstead of Docker Hub - Switched to calendar versioning
Commits
- ⬆️ bump deps
3202258 - 🐛 fix container build
134570e - ✅ fix test that was checking version against a hardcoded value and bump deps
87c2a77 - 🔀 Merge branch 'maint/issue-123-project-maintenance'
6fff510 - 🔥 remove tools/check_gitmoji.py and its pre-commit hook
ad08612 - 👌 address review: prune zaojun args, reset-release-notes no push, fix uv_build, update Release-Notes
a29b112 - ⏪ revert version number — keep calver scaffolding only
69e2e9a - 📝 mark all TODO.md items complete
24fd325 - 🔖 switch to calver versioning (YYYY.MM.DD)
bed67ba - 🐛 URL-encode camera names in event tile URLs, fix time bar labels
7dc73b6 - 🔥 remove dead list_days and list_days_with_stats functions
8210135 - 📄 document all source files, add per-file-ignores for tests
77d80e4 - 🐳 make Containerfile self-contained, simplify justfile
0be6ce3 - 💚 finish CI overhaul: setup-uv in all jobs, gitleaks checksums, publish-container
cecac51 - 💚 replace curl|sh with setup-uv, gitleaks checksums, add publish-container job
6ba3451 - 🔧 add scaffolding files and config alignment
8c8c714 - 📝 reset Release-Notes.md for next release
fd46ca0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Container images are now published to
-
0.10.1 Stable
released this
2026-07-16 08:02:41 +00:00 | 118 commits to main since this release[0.10.1] - 2026-07-16
- Fixed a bug where snapshot processing could stop for cameras with frequent
Commits
- 🔀 Merge branch 'fix/issue-121-stale-dcache-after-prune'
d3a2a91 - 📝 Document timezone/NTP requirement for snapshot pruning and add release note
d09719f - 🐛 Only prune snapshot date directories whose day has passed
8af7107 - 🐛 Restrict snapshot-scan pruning to hour/minute leaf directories
477a87a - 📝 reset Release-Notes.md for next release
1735c38
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.10.0 Stable
released this
2026-07-16 03:23:58 +00:00 | 125 commits to main since this release[0.10.0] - 2026-07-16
- Snapshot scrubber on the day-level snapshot page — a time slider, filmstrip, and play/pause controls for browsing large numbers of per-camera still images.
Commits
- 🔀 Merge branch 'feat/PI-snapshot-scrubber'
eb7f067 - 🐛 Restore start_time/end_time filtering in scrubber snapshot route
a1b51ad - ♻️ Replace density dots with motion event markers on scrubber timeline
ae3f94f - 🐛 Make density dots visible — larger 5px size, stronger color
f909a7a - 📝 Add snapshot scrubber release notes and documentation
da800ee - ✨ Add scrubber snapshot template with filmstrip and time slider
0e62acc - ✅ Add failing tests for scrubber snapshot UI
acd131c - 🐛 URL-encode camera name in snapshot query strings
29d84b4
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.9.0 Stable
released this
2026-07-15 06:19:02 +00:00 | 135 commits to main since this release[0.9.0] - 2026-07-15
- Live snapshot strip on the home page — shows the latest snapshot from each camera, auto-refreshing every 30 seconds. Two cameras fill the screen; max three per row. Cameras without snapshots show a placeholder.
Commits
- 🔀 Merge branch 'feat/issue-115-live-snapshot-strip'
b6890bb - 📝 Document live snapshot strip in Release-Notes and web UI docs
728e48e - ✅ Final verification — all tests and linters pass
f04e278 - 💄 Integrate live snapshot strip on home page
969e9af - ✨ Add /live-snapshots fragment route and template
6cef735 - ✨ Add /live/snapshots/{camera}/img route
eb0049a - ✨ Add latest_snapshot_per_camera DB query
d2a670d - 📝 reset Release-Notes.md for next release
9eed1fb
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.8.0 Stable
released this
2026-07-15 02:36:14 +00:00 | 145 commits to main since this release[0.8.0] - 2026-07-15
- New camera setup guide covering recommended Dahua configuration for use with cang
- Fixed: motion on two cameras at the same time now shows as two separate events instead of one mislabelled event
- Processed recordings and snapshots now move out of the camera incoming folders into cang's own storage — anything still in an incoming folder is unprocessed; existing installations migrate automatically on first start
- Fixed: clip videos — and in fact the whole output directory, including the database — were served without authentication; videos now go through an authenticated route
Commits
- 🔀 Merge branch 'feat/incoming-move-out'
7103df9 - 🔧 move CLAUDE.md to AGENTS.md and symlink back to CLAUDE.md
ccd827f - 📝 document storage layout, automatic migration, and removed config key
0983405 - 🐛 guard migration unlinks with atomic copies and content verification
0ff0b1b - ✨ migrate existing storage layout on startup
fa883bc - 🔒 serve clip videos through an authenticated route instead of a public mount
246131a - ♻️ drop filesystem snapshot-to-clip matching from adapters
3cac314 - ✨ store clips under clips/ and resolve thumbnails from the snapshot table
d76b5b7 - 💥 always delete incoming sources after successful transcode
980c78c - ✨ move snapshots into canonical output tree on ingest
a8f7298 - ✨ add db helpers for storage migration and thumbnail updates
6dbaa9d - ✨ add storage path helpers and safe copy/prune primitives
e178f36 - 🔀 Merge branch 'fix/per-camera-events'
c8c2bde - 📝 name marvin8 explicitly in AI-DECLARATION.md
c4d78d6 - 📝 add AI-DECLARATION.md declaring AI involvement levels
f2c8bec - 📝 document per-camera event detection fix
ba496c1 - 🐛 detect motion events per camera instead of merging across cameras
dac91d7 - ✨ add group_events_per_camera for per-camera event grouping
f574692 - 🔀 Merge branch 'docs/camera-setup'
e35d133 - 📝 update Release-Notes for camera setup guide
f6feaab - 📝 address WuMing review: clarify interval dropdown and admin error message
52f8921 - 📝 add DH-IPC-HDW2849TM-S-IL to tested camera models
5c7ff60 - 📝 add camera setup guide for Dahua cameras
135993c - 📝 reset Release-Notes.md for next release
ea91b10
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.7.0 Stable
released this
2026-07-11 09:02:13 +00:00 | 171 commits to main since this release[0.7.0] - 2026-07-11
- Calendar home screen: two-month grid with per-day motion event and snapshot counts
- Day-of-week added to single-day headings (e.g. Thursday · 2026-07-11)
- Login form replaces HTTP Basic Auth for password-manager compatibility
Commits
- 🔀 Merge branch 'feat/calendar-home-dayofweek-login'
a0e3fd0 - 📝 update Release-Notes for calendar, day-of-week, login form
030031d - ✏️ fix 'pasword' typo in TODO item #6
ecffa94 - ✏️ fix double 'a' typo in TODO item #4
f2ef868 - 📝 update docs for calendar, login form, day-of-week; fix in_retention for future dates
4df08bb - ✨ replace HTTP Basic auth with cookie-based login form
03bfd85 - ✨ add day-of-week to single-day headings
a3bbad3 - ✨ calendar home screen with two-month grid
00ec34b - 🔧 increase WuMing max_diff_lines to 3000
01cadd5 - ✨ add list_motion_snapshots_for_range DB query
3db9cb4 - 📝 reset Release-Notes.md for next release
b7ebc5b
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.6.0 Stable
released this
2026-07-09 05:20:23 +00:00 | 184 commits to main since this release[0.6.0] - 2026-07-09
- Snapshot-first NVR redesign: events UI, tiered retention, improved JPG cleanup.
- Documentation now also hosted at https://cang.marvin8.zone; old Codeberg Pages links redirect automatically.
Commits
- Merge branch 'feat/snapshot-first-nvr'
392a417 - ⚡ skip transcoding clips older than video_retention_days; delete source immediately
6150d78 - ⚡ batch snapshot inserts into a single transaction per camera scan
0d2f539 - 🐛 fix day view layout and add event grid CSS so snapshot images scale correctly
10b065f - 🐛 configure root logger so cang.* messages are visible; suppress Ctrl-C traceback
7c80f23 - 🔊 log startup progress per camera with counts
0f6e844 - 🎨 enforce one-import-per-line via isort force-single-line; fix all imports
f04a5d7 - 🎨 split multi-name imports in lifespan.py per project style
3fe1b29 - 📝 fix documentation URL in README
9cf4e6b - 📝 add post-merge TODO items from snapshot-first review
1f4b630 - 📝 document retention_days config keys in docs/config.md
8d921b7 - 📝 update Release-Notes for snapshot-first NVR redesign
1502339 - 📝 remove development-paused notice from README
cd502f8 - ✨ redesign web UI — events grid primary, DB-backed snapshots, clips secondary
9bdc249 - ✨ add group_into_events for motion snapshot event detection
e022481 - ✨ add snapshot ingestion and tiered retention cleanup to lifespan
c35dd4c - ✨ add retention config fields; snapshot cleanup now owned by retention job
08167fc - ✨ add snapshots table (migration v3) and snapshot DB queries
c733f1d - 🎨 split multi-name imports onto separate lines per project style
17992ee - ✨ add IncomingSnapshot dataclass and DahuaAdapter.scan_snapshots
e5a6298 - Merge branch 'feat/forgejo-migration'
0bbf47d - 📝 add grebedoc docs bullet to Release-Notes.md
4b8cd29 - 📝 CLAUDE.md — reference template instead of repeating format
f931c78 - 📝 update CLAUDE.md — release notes process and format
cca26ba - 👷 replace git-cliff with Release-Notes.md changelog generation
2f6ccd8 - 📝 add grebedoc hosting and client-side redirect
c6b6956 - 👷 migrate CI from Woodpecker to Forgejo Actions
17190b8 - 🔧 bump deps
fba55fc
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.5.0 Stable
released this
2026-06-22 02:34:39 +00:00 | 214 commits to main since this release[0.5.0] - 2026-06-22
CI
- 👷 not publishing release notes for cang at this time (
a7a6ed8) - 👷 Replace custom agent-review pipeline with WuMing (
4e79198)
Features
- ✨ add auto-advance slideshow and open-in-tab to snapshot viewer (
28662bb)
Security Fixes
- 🔒 fix: tighten constraint-dependencies to resolve pysentry vulnerabilities (
b600b84)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 👷 not publishing release notes for cang at this time (
-
0.4.2 Stable
released this
2026-06-06 00:46:59 +00:00 | 233 commits to main since this release[0.4.2] - 2026-06-06
Bug Fixes
- 🐛 fix: fall back to clip thumbnail when source snapshots are deleted (
c7261e6) - 🐛 fix: address review — extract fallback helper with root validation, add edge-case tests (
2ed117a) - 🐛 fix: add docstrings to clip snapshot route handlers (
916e640) - 🐛 fix: extract _build_allowed_roots helper, resolve symlinks in path checks (
1c0b46e) - 🐛 fix: copy all clip snapshots to output_dir on ingest (
0e98671) - 🐛 fix: run snapshot copy in executor, log OSError on failure (
e20d058)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 🐛 fix: fall back to clip thumbnail when source snapshots are deleted (
-
0.4.1 Stable
released this
2026-06-03 08:01:43 +00:00 | 249 commits to main since this release[0.4.1] - 2026-06-03
Documentation
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)