Repository navigation
What's Changed
- feat(admin): make a new group's web address from its name by @cyberbeuk in #56
- feat(admin): closure heading and contact block copy, team contact override (ADR 0037, CL-1) by @cyberbeuk in #55
- docs(adr): dispatch option with own queue (0043) and planner agenda (0044) by @cyberbeuk in #57
- docs: ADR 0042 lockout recovery without a login bypass by @cyberbeuk in #58
- docs(adr): dedicated Webex site and enforced meeting policy (0045) by @cyberbeuk in #59
- feat(citizen): closure page, banner link and contact options on bookings on hold (ADR 0037, CL-2) by @cyberbeuk in #60
- feat(admin): staff directory with just-in-time records from OIDC (ADR 0046 step 1) by @cyberbeuk in #61
- docs(adr): role and scope paired in one claim value (0049) by @cyberbeuk in #64
- feat(admin): live progress of updates, steps reported by the host updater (ADR 0048) by @cyberbeuk in #63
- feat(admin): maintenance mode switch and read-only enforcement (ADR 0038, MM-1, MM-2) by @cyberbeuk in #65
- feat(events): one event schema for audit table and log lines (ADR 0040 part 2) by @cyberbeuk in #70
- docs(adr): admin information architecture and structure guard (0047) by @cyberbeuk in #62
- feat(audit): ship audit events to a log platform, security events deduplicated (ADR 0034) by @cyberbeuk in #72
- test(e2e): keep the direct-call group away from midnight by @cyberbeuk in #78
- feat(audit): filters per level, category, period and trace; CSV export (ADR 0040 part 3) by @cyberbeuk in #79
- feat(settings): settings registry, consistency test and settings CLI (ADR 0042 step 1) by @cyberbeuk in #77
- feat(admin): disable refused buttons during maintenance, from the matrix (ADR 0038, MM-2) by @cyberbeuk in #66
- feat(audit): diagnostic mode and retention per category (ADR 0040 part 4) by @cyberbeuk in #84
- feat(admin): navigation register, grouped side navigation and theme choice (ADR 0047 step 2) by @cyberbeuk in #80
- feat(citizen): maintenance page and machine-API write refusal (ADR 0038, MM-3) by @cyberbeuk in #67
- feat(updater): maintenance mode around backup, update and restore (ADR 0038, MM-4) by @cyberbeuk in #68
- feat(cli): lockout diagnostics, oidc-check and host closure commands (ADR 0042 step 8) by @cyberbeuk in #73
- feat(admin): allowed origins per organisation and embedding opt-in per group (ADR 0035, EM-1) by @cyberbeuk in #83
- feat(admin): group agenda with agents and shortfalls per slot (ADR 0044 step 1) by @cyberbeuk in #81
- feat(admin): closure image with text alternative, metadata stripped (ADR 0037, CL-3) by @cyberbeuk in #74
- feat(admin): custom roles within fixed bounds, role editor and change history (ADR 0039 step 3) by @cyberbeuk in #71
- feat(api): widget API with CORS for allowed origins (ADR 0035, EM-2) by @cyberbeuk in #85
- feat(admin): planner moves, cancels and accepts shortfalls from the agenda (ADR 0044 step 2) by @cyberbeuk in #92
- fix(e2e): calendar tests no longer depend on the day of the month by @cyberbeuk in #100
- feat(admin): ask citizens to choose a new time, one by one or per short slot (ADR 0044 step 3) by @cyberbeuk in #98
- feat(worker): report long maintenance; runbook, threat model, architecture (ADR 0038, MM-5) by @cyberbeuk in #69
- security(config): refuse dev-only placeholder secrets in production by @cyberbeuk in #103
- docs(licence): EUPL-1.2 for every file, contributor licence agreement (ADR 0054) by @cyberbeuk in #102
- feat(audit): security events for attempts on public entry points (ADR 0053) by @cyberbeuk in #97
- chore(ci): keep every dependency current, fail on deprecations (ADR 0051) by @cyberbeuk in #94
- feat(widget): Web Component and test host page (ADR 0035, EM-3, EM-4) by @cyberbeuk in #86
- feat(admin): closure scenarios per organisation and team (ADR 0037, CL-4) by @cyberbeuk in #75
- docs(adr): release and versioning policy, commit in every image (0052) by @cyberbeuk in #96
- feat(settings): X_FILE for bootstrap secrets and app.cli init (ADR 0042 step 2) by @cyberbeuk in #99
- docs(widget): embedding guide for host websites and runbook (ADR 0035, EM-5) by @cyberbeuk in #87
- feat(jobs): contact options and closure page link in the closure mails (ADR 0037, CL-5) by @cyberbeuk in #76
- chore(tests): run the test suite on every core with pytest-xdist by @cyberbeuk in #101
- fix(ci): exempt authors with write access from the CLA box, also with a private membership by @cyberbeuk in #104
- docs(readme): pitch OpenPlanner as a general Webex video-meeting scheduler by @cyberbeuk in #105
- feat(groups): dispatch kind per group and own-queue change deadline (ADR 0043 step 1) by @cyberbeuk in #88
- feat(settings): platform settings with env lock, live reload and Advanced settings (ADR 0042 step 3) by @cyberbeuk in #106
- fix(migrations): join the heads 0042 (dispatch kind) and 0048 (platform settings) by @cyberbeuk in #107
- feat(install): host installer that installs, repairs and re-checks a host (ADR 0050) by @cyberbeuk in #82
- feat(settings): change class C settings in the portal and from the host (ADR 0042 step 4) by @cyberbeuk in #108
- feat(queue): OpenPlanner's own queue with claim and release (ADR 0043 step 2) by @cyberbeuk in #89
- feat(settings): class D settings per organisation (ADR 0042 step 5) by @cyberbeuk in #110
- chore(ci): run CI for the merge queue; join the Alembic heads 0043 and 0051 by @cyberbeuk in #112
- chore(design-sync): sync the OpenPlanner styles to Claude Design by @cyberbeuk in #109
- chore(release): v0.3.0 by @cyberbeuk in #113
Full Changelog: v0.2.0...v0.3.0