-
0.3.6 Stable
released this
2026-05-31 23:56:50 +00:00 | 238 commits to main since this release[0.3.6] - 2026-05-31
Bug Fixes
- 🐛 fix: force keyframe interval and disable scene-cut for DAV transcode (
cdadd1b)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 🐛 fix: force keyframe interval and disable scene-cut for DAV transcode (
-
0.3.5 Stable
released this
2026-05-31 07:49:28 +00:00 | 243 commits to main since this release[0.3.5] - 2026-05-31
Bug Fixes
- 🐛 fix: replace inotify Observer with PollingObserver (
426064a)
Documentation
- 📝 docs: document inotify limit and polling fallback in troubleshooting guide (
462917f) - 📝 docs: add release notes prose for polling observer change (
2d41058)
Testing
- ✅ test: update FileWatcher tests to assert PollingObserver is used (
5fc9197)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 🐛 fix: replace inotify Observer with PollingObserver (
-
0.3.4 Stable
released this
2026-05-31 04:39:16 +00:00 | 250 commits to main since this release[0.3.4] - 2026-05-31
Bug Fixes
- 🐛 fix: re-encode DAV video to eliminate H.264 decode artifacts (
6ce6642)
Documentation
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 🐛 fix: re-encode DAV video to eliminate H.264 decode artifacts (
-
0.3.3 Stable
released this
2026-05-31 03:17:01 +00:00 | 256 commits to main since this release[0.3.3] - 2026-05-31
Bug Fixes
- 🐛 fix: drop prepare_labels step; CI_ENV_FILE unavailable on this instance (
a7b4052)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 🐛 fix: drop prepare_labels step; CI_ENV_FILE unavailable on this instance (
-
0.3.2 Stable
released this
2026-05-31 02:55:52 +00:00 | 263 commits to main since this release[0.3.2] - 2026-05-31
Bug Fixes
- 🐛 fix: build venv at /opt/venv so entry-point shebang is correct (
3e4e99d)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- 🐛 fix: build venv at /opt/venv so entry-point shebang is correct (
-
0.3.1 Stable
released this
2026-05-31 00:56:13 +00:00 | 270 commits to main since this release[0.3.1] - 2026-05-31
[0.3.0] - 2026-05-31
Bug Fixes
- 🐛 fix: switch .dav transcode to stream-copy with DHAV demuxer flags
- 🐛 fix: include README.md in container build context
- 🐛 fix: address PR review comments
CI
- 👷 ci: add commit-msg hook to enforce cliff.toml gitmoji set
- 👷 ci: add container build check to ci pipeline
- 👷 ci: add container publish pipeline
Documentation
- 📝 docs: add icon assets to docs/assets/ and wire into MkDocs
- 📝 docs: add wordmark to README
- 📝 docs: add icon/ folder with all icon assets
- 📝 docs: use light wordmark PNG in README for dark background
- 📝 docs: document scan_interval as the NFS pickup mechanism
- 📝 docs: update CLAUDE.md ffmpeg section
- 📝 docs: add container and Quadlet setup guide
- 📝 docs: remove AutoUpdate from Quadlet example
- 📝 docs: add 0.3.0 release notes
- 📝 docs: reformat release notes with summary bullets and detail paragraphs
- 📝 docs: adopt taibai thread format for release notes and add rules to CLAUDE.md
Features
- ✨ feat: add sticky header with icon and tagline
- ✨ feat: default video playback to muted
- ✨ feat: add pylock.toml (PEP 751 export of uv.lock)
- ✨ feat: add footer links to repo and docs in web UI
- ✨ feat: add Containerfile and compose.yaml
- ✨ feat: inject version into Jinja2 globals and display in footer
Refactoring
- ♻️ refactor: use self-documenting variable names in check_gitmoji
Testing
- ✅ test: update pipeline tests for DHAV stream-copy ffmpeg options
- ✅ test: verify version string appears in rendered footer
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.3.0 Stable
released this
2026-05-31 00:36:26 +00:00 | 275 commits to main since this release[0.3.0] - 2026-05-31
Bug Fixes
- 🐛 fix: switch .dav transcode to stream-copy with DHAV demuxer flags
- 🐛 fix: include README.md in container build context
- 🐛 fix: address PR review comments
CI
- 👷 ci: add commit-msg hook to enforce cliff.toml gitmoji set
- 👷 ci: add container build check to ci pipeline
- 👷 ci: add container publish pipeline
Documentation
- 📝 docs: add icon assets to docs/assets/ and wire into MkDocs
- 📝 docs: add wordmark to README
- 📝 docs: add icon/ folder with all icon assets
- 📝 docs: use light wordmark PNG in README for dark background
- 📝 docs: document scan_interval as the NFS pickup mechanism
- 📝 docs: update CLAUDE.md ffmpeg section
- 📝 docs: add container and Quadlet setup guide
- 📝 docs: remove AutoUpdate from Quadlet example
- 📝 docs: add 0.3.0 release notes
- 📝 docs: reformat release notes with summary bullets and detail paragraphs
- 📝 docs: adopt taibai thread format for release notes and add rules to CLAUDE.md
Features
- ✨ feat: add sticky header with icon and tagline
- ✨ feat: default video playback to muted
- ✨ feat: add pylock.toml (PEP 751 export of uv.lock)
- ✨ feat: add footer links to repo and docs in web UI
- ✨ feat: add Containerfile and compose.yaml
- ✨ feat: inject version into Jinja2 globals and display in footer
Refactoring
- ♻️ refactor: use self-documenting variable names in check_gitmoji
Testing
- ✅ test: update pipeline tests for DHAV stream-copy ffmpeg options
- ✅ test: verify version string appears in rendered footer
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.2.0 Stable
released this
2026-05-29 21:28:45 +00:00 | 317 commits to main since this release[0.2.0] - 2026-05-29
First release. This now has most functionality in place.
At this point only Dahua cameras are supported.Bug Fixes
- 🐛 Accept Path in load_config, update tests
- 🐛 Create output dir, log ffmpeg to file, kill on cancel
- 🐛 Safe mp4 filenames and fix video URL in day template
- 🐛 Pipeline: copy snapshot to output dir on transcode completion; fixes broken thumbnails when source is deleted
- 🐛 Lifespan: use middle snapshot as thumbnail instead of first
- 🐛 Config: add scan_interval to ServerConfig (default 300 s)
- 🐛 Pipeline: periodic re-scan fallback for inotify race condition
- 🐛 Dahua: remove serial directory level; cam.root is now the serial dir
CI
- 👷 add noxfile.py with ruff and tryke sessions
- 👷 add .woodpecker/ci.yml lint and test pipeline
- 👷 add .pre-commit-config.yaml with prek hooks
- 👷 add ty type-checking session to noxfile.py
- 👷 address review: drop push trigger, add complexipy/pysentry/deptry/zaojun
- 👷 Only run CI on pull_request events, not push
- 👷 CI: expand ci.yml to release/tag events; add gitleaks and validate_release_notes
- 👷 CI: add publish-pypi.yml pipeline
- 👷 CI: add fediverse.yml announcement pipeline
- 👷 CI: add weekly-checks.yml cron pipeline
- 👷 CI: add publish-docs.yml pipeline
Documentation
- 📝 mark Roadmap M0 complete in ROADMAP.md
- 📝 add Woodpecker CI badge to README.md
- 📝 mark Roadmap M1 complete in ROADMAP.md
- 📝 Mark M4 complete in ROADMAP.md
- 📝 Add docs/config.md and mark M3 complete in ROADMAP.md
- 📝 Mark M6 done in ROADMAP.md
- 📝 Add startup scan item to M7 in ROADMAP.md
- 📝 Web UI and install docs; update config ref and ROADMAP
- 📝 Document output dir layout, filename format, and ffmpeg.log
- 📝 Document flags, thumbnail poster, and responsive layout
- 📝 Docs: config reference — delete_after_transcode
- 📝 Docs: document completed-only day view and processing banner
- 📝 Docs: document scan_interval config key
- 📝 Add Release-Notes.md stub
- 📝 Add mkdocs.yml, docs_hooks.py, and docs/index.md
- 📝 Update README; fix docs; remove concept.md and dahua-folders-files.txt
- 📝 README: correct copyright holder to Marvin8
Features
- ✨ add src/cang/init.py with importlib.metadata version
- ✨ Implement DahuaAdapter — folder parsing and snapshot matching
- ✨ Implement transcode coroutine and Pipeline queue worker
- ✨ Implement config.py loader and validation
- ✨ Implement db module
- ✨ Integrate watchdog FileWatcher into pipeline
- ✨ Extend config with WebConfig and [web] section
- ✨ Add list_days, list_clips_for_day, get_clip to db
- ✨ Add make_adapter() factory
- ✨ FastAPI app, lifespan, startup scan, auth, routes, templates
- ✨ Add CLI entry point
- ✨ Serve clip thumbnails via /clips/{id}/thumbnail
- ✨ Show trigger flags and snapshot poster on day page
- ✨ Responsive clip grid — auto-fill columns, no fixed-width cap
- ✨ DB + route + template: per-day statistics on /days
- ✨ Config: add delete_after_transcode per-camera option
- ✨ Pipeline: delete source files after successful transcode
- ✨ Web: camera badge + hour sidebar on day page
- ✨ DB: add status column with v2 migration; new helpers set_clip_done, get_clip_by_camera_filename, count_pending_for_day
- ✨ Pipeline: on_done callback on TranscodeJob; Pipeline.watch takes async callback
- ✨ Lifespan: re-enqueue pending clips on restart; mark done after transcode; wire file-watcher DB insert
- ✨ Web: day page filters to completed clips; shows pending-count banner
Refactoring
- ♻️ docs_hooks.py: remove llms-full.txt generation
Security Fixes
- 🔒 Constrain starlette>=1.0.1 to fix CVEs (GHSA-7f5h, GHSA-2c2j, PYSC-2026-161)
Testing
- ✅ add tests/test_smoke.py smoke test
- ✅ Add failing tests for DahuaAdapter
- ✅ Add failing tests for pipeline transcode and queue flow
- ✅ Add failing tests for config loader
- ✅ Add failing db tests
- ✅ Add FileWatcher tests
- ✅ Add failing tests for WebConfig parsing
- ✅ Add failing tests for list_days, list_clips_for_day, get_clip
- ✅ Add failing web route tests
- ✅ Tests: list_days_with_stats DB query
- ✅ Tests: delete_after_transcode config and pipeline cleanup
- ✅ Tests: transcode-status DB queries and on_done pipeline callback
- ✅ Tests: snapshot copy to output dir and thumbnail DB update
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads