• 0.3.6 33eef789ff

    0.3.6 Stable

    marvin8 released this 2026-05-31 23:56:50 +00:00 | 238 commits to main since this release

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

    [0.3.6] - 2026-05-31

    Bug Fixes

    • 🐛 fix: force keyframe interval and disable scene-cut for DAV transcode (cdadd1b)
    Downloads
  • 0.3.5 83f76f170f

    0.3.5 Stable

    marvin8 released this 2026-05-31 07:49:28 +00:00 | 243 commits to main since this release

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

    [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
  • 0.3.4 8ed46a360b

    0.3.4 Stable

    marvin8 released this 2026-05-31 04:39:16 +00:00 | 250 commits to main since this release

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

    [0.3.4] - 2026-05-31

    Bug Fixes

    • 🐛 fix: re-encode DAV video to eliminate H.264 decode artifacts (6ce6642)

    Documentation

    • 📝 docs: update Release-Notes for DAV re-encode fix (93398dc)
    • 📝 docs: add manual transcode variant log for DAV files (6ea261c)
    Downloads
  • 0.3.3 344629b7d1

    0.3.3 Stable

    marvin8 released this 2026-05-31 03:17:01 +00:00 | 256 commits to main since this release

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

    [0.3.3] - 2026-05-31

    Bug Fixes

    • 🐛 fix: drop prepare_labels step; CI_ENV_FILE unavailable on this instance (a7b4052)
    Downloads
  • 0.3.2 1e811a2654

    0.3.2 Stable

    marvin8 released this 2026-05-31 02:55:52 +00:00 | 263 commits to main since this release

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

    [0.3.2] - 2026-05-31

    Bug Fixes

    • 🐛 fix: build venv at /opt/venv so entry-point shebang is correct (3e4e99d)
    Downloads
  • 0.3.1 9e8da993bd

    0.3.1 Stable

    marvin8 released this 2026-05-31 00:56:13 +00:00 | 270 commits to main since this release

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

    [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
  • 0.3.0 4c49685bc4

    0.3.0 Stable

    marvin8 released this 2026-05-31 00:36:26 +00:00 | 275 commits to main since this release

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

    [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
  • 0.2.0 d292624753

    0.2.0 Stable

    marvin8 released this 2026-05-29 21:28:45 +00:00 | 317 commits to main since this release

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

    [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