v0.2.0
What's Changed
- Add CLAUDE.md agent guide by @RyanMorash in #1
- Update uv-build requirement from <0.12.0,>=0.11.15 to >=0.11.16,<0.12.0 by @dependabot[bot] in #3
- Bump ruff from 0.15.13 to 0.15.14 by @dependabot[bot] in #2
- Add read-only CiviCRM API4 client by @RyanMorash in #4
- Add UniFi Access local-API client by @RyanMorash in #5
- Add orchestrator + ops stubs + subcommand CLI by @RyanMorash in #6
- Add scheduler daemon loop with SIGTERM/SIGINT handling by @RyanMorash in #7
- Harden UniFi reactivation ordering to avoid stale access windows by @RyanMorash in #8
- 📝 Add docstrings to
codex/propose-fix-for-user-reactivation-vulnerabilityby @coderabbitai[bot] in #9 - Bump ruff from 0.15.14 to 0.15.16 by @dependabot[bot] in #11
- Update uv-build requirement from <0.12.0,>=0.11.16 to >=0.11.20,<0.12.0 by @dependabot[bot] in #13
- Sync member email from CiviCRM to UniFi Access by @RyanMorash in #14
- test(unifi): replace per-test client.close() with a teardown fixture by @RyanMorash in #23
- Bump pyrefly from 1.0.0 to 1.1.1 by @dependabot[bot] in #19
- Bump pytest from 9.0.3 to 9.1.1 by @dependabot[bot] in #20
- Bump ruff from 0.15.16 to 0.15.20 by @dependabot[bot] in #21
- Update uv-build requirement from <0.12.0,>=0.11.20 to >=0.11.24,<0.12.0 by @dependabot[bot] in #22
- chore: reformat test_state.py for ruff 0.15.20 by @RyanMorash in #24
- ci: add pytest-cov coverage and upload to GitHub's native coverage by @RyanMorash in #25
- ci: add a real ruff format gate; rename the lint step by @RyanMorash in #26
- ci: add a job summary (gate status + coverage) by @RyanMorash in #27
- test(alert): assert exact Mailgun URL (resolves CodeQL url-substring alert) by @RyanMorash in #28
- test: cover error/edge/validation paths in I/O clients and config by @RyanMorash in #29
- fix(unifi): correct dry-run false diffs against the real UniFi Access API by @RyanMorash in #30
- chore: resolve code quality findings by @RyanMorash in #31
- fix(unifi): best-effort email + per-user resilient apply (CODE_ADMIN_EMAIL_EXIST crash) by @RyanMorash in #32
- fix(unifi): reuse recycled NFC cards (free on deactivate, reclaim from disabled holder) by @RyanMorash in #33
- chore(ruff): exclude Markdown from the formatter by @RyanMorash in #52
- chore(deps-dev): update uv-build requirement from <0.12.0,>=0.11.24 to >=0.11.24,<0.13.0 by @dependabot[bot] in #48
- chore(deps-dev): bump ruff from 0.15.20 to 0.16.7 by @dependabot[bot] in #51
- chore(deps-dev): bump pyrefly from 1.1.1 to 1.3.0 by @dependabot[bot] in #44
- chore(build): constrain uv_build to a single minor by @RyanMorash in #53
- feat(webhook): embedded receiver for CiviCRM-triggered reconciles by @RyanMorash in #36
- build(deb): package door-sync as a .deb, built on each release by @RyanMorash in #55
- deploy: rpi-image-gen appliance build, installing the door-sync .deb by @RyanMorash in #56
- ci: single release workflow — package, appliance image and OTA bundle by @RyanMorash in #57
- ci: land the release workflow from #57 onto main by @RyanMorash in #58
- chore: bump version to 0.2.0 by @RyanMorash in #59
New Contributors
- @RyanMorash made their first contribution in #1
- @dependabot[bot] made their first contribution in #3
- @coderabbitai[bot] made their first contribution in #9
Full Changelog: https://github.com/TechValleyCenterOfGravity/door-sync/commits/v0.2.0