Skip to content

Release 2026.9.0 - #682

Merged
MarcelGeo merged 25 commits into
masterfrom
develop
Sep 23, 2026
Merged

MarcelGeo merged 25 commits into
masterfrom
develop

Conversation

@MarcelGeo

Copy link
Copy Markdown
Collaborator

No description provided.

varmar05 and others added 25 commits July 1, 2026 08:50
Introduce a pluggable audit module with NullSink default and emit() API.

Wire SQLAlchemy listeners for user and project lifecycle events,
explicit emits for auth and sync endpoints (login, password, access
grants/revocations, version push, soft/hard delete, restore).

Add actor_context()/request_context() helpers, device_id capture, scope_id
for workspace-scoped filtering, and target_type auto-derivation.

This is groundwork for adding more events and to be extended in EE with custom sinks, query API, and retention policy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements structured audit event emission for all relevant user and project actions.
Update AuditEvent dataclass with new target columns: project_id, workspace_id and user_id.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…events

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Also simplify test_get_projects_by_uuids to avoid the fake-workspace-id hack.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… events

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… deletion

Also fixes anonymize_removed_users() which now calls inactivate() + user_account_closed
before anonymizing, so memberships are cleaned up for users scheduled via schedule_delete_user.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
project delete, login failed target, invitation events, spurious project.updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
emit() now sanitizes metadata using the app's own JSON
provider, so every sink (present and future) gets safe values without
needing to serialize anything itself.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…eted event

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…_id, user.locked noise

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Backport master to dev branch
@MarcelGeo
MarcelGeo requested a review from varmar05 September 23, 2026 13:33
@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 35867845300

Coverage increased (+0.2%) to 92.644%

Details

  • Coverage increased (+0.2%) from the base build.
  • Patch coverage: 26 uncovered changes across 8 files (680 of 706 lines covered, 96.32%).
  • 4 coverage regressions across 2 files.

Uncovered Changes

File Changed Covered %
server/mergin/audit/app.py 27 20 74.07%
server/mergin/audit/listeners.py 56 49 87.5%
server/mergin/utils.py 12 8 66.67%
server/mergin/auth/controller.py 34 32 94.12%
server/mergin/auth/listeners.py 35 33 94.29%
server/mergin/tests/test_audit_events.py 302 300 99.34%
server/mergin/sync/db_events.py 16 15 93.75%
server/mergin/sync/models.py 15 14 93.33%
Total (28 files) 706 680 96.32%

Coverage Regressions

4 previously-covered lines in 2 files lost coverage.

File Lines Losing Coverage Coverage
server/mergin/auth/controller.py 2 93.21%
server/mergin/sync/utils.py 2 85.4%

Coverage Stats

Coverage Status
Relevant Lines: 11148
Covered Lines: 10328
Line Coverage: 92.64%
Coverage Strength: 0.93 hits per line

💛 - Coveralls

@MarcelGeo
MarcelGeo merged commit e15c804 into master Sep 23, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants