Skip to content

Releases: TestaVivaDK/sharepoint-sharing-audit

v0.6.0

27 Feb 13:06

Choose a tag to compare

What's New

Bulk Unshare: Retry, Verification & Neo4j Cleanup

  • Retry logic — Automatic retry on Graph API 429 (throttling) with Retry-After support and 5xx exponential backoff (max 4 retries)
  • Post-delete verification — Re-fetches permissions after deletion to confirm they were actually removed
  • Neo4j cleanup — Removes SHARED_WITH relationships on verified success so files disappear on page refresh
  • Inter-file throttle delay — 0.5s delay between files to avoid triggering rate limits

Structured Error Reasons & Result Dialog

  • 5 error categoriesACCESS_DENIED, NOT_FOUND, THROTTLED, VERIFICATION_FAILED, UNKNOWN — each with a user-facing message and suggested action
  • Result dialog — Replaces the auto-hiding toast with a persistent dialog showing per-file outcomes:
    • Color-coded reason chips (red for Access Denied, orange for Rate Limited, blue for Not Found)
    • File paths resolved from cache
    • Suggested actions for each failure
    • "Retry Failed" button for throttled files

Files Changed

Backend

  • src/shared/neo4j_client.py — new remove_shared_with() method
  • src/webapp/graph_unshare.py_request_with_retry(), _classify_error(), verification step, structured errors
  • src/webapp/routes_unshare.py — wired Neo4j client from app.state

Frontend

  • frontend/src/api/types.tsUnshareFailure / UnshareReason types
  • frontend/src/components/UnshareResultDialog.tsx — new component
  • frontend/src/components/UnshareButton.tsx — replaced toast with result dialog

Full Changelog: v0.5.3...v0.6.0

v0.5.3

23 Feb 22:08

Choose a tag to compare

Bug Fix

  • MUI license key trailing newline — Strip whitespace from MUI_LICENSE_KEY env var to prevent broken config.js output when Kubernetes secrets include trailing newlines.

Full Changelog: v0.5.2...v0.5.3

v0.5.2

23 Feb 22:01

Choose a tag to compare

Bug Fixes

  • MUI license key not injected — Added MUI_LICENSE_KEY env var to the webapp Helm deployment, reading from the existing secret. Configurable via webapp.muiLicenseSecretKey (defaults to MUI_LICENSE_KEY).
  • Files query independent of scan run — Carried over from v0.5.1.

Full Changelog: v0.5.1...v0.5.2

v0.5.1

23 Feb 21:52

Choose a tag to compare

Bug Fix

Files disappearing after scan restart — The webapp query filtered by lastSeenRunId tied to the latest completed scan. When a new running scan overwrote the run ID on existing relationships, the webapp returned zero results because it still referenced the old completed scan.

Fix: Removed lastSeenRunId filter from file queries. Files are now shown based on existing SHARED_WITH relationships. Deleted files are excluded via deletedAt IS NULL.

Full Changelog: v0.5.0...v0.5.1

v0.5.0

23 Feb 21:08

Choose a tag to compare

What's New

Delta Query Support

  • Subsequent scans now use Microsoft Graph delta queries to process only changed items, reducing ~18h full scans to minutes
  • Automatic full rescan every 7 days (configurable via FULL_SCAN_INTERVAL_DAYS)
  • FORCE_FULL_SCAN env var to override delta behavior
  • Graceful fallback to full walk when delta links expire (HTTP 410)
  • Deleted files are marked in the graph rather than leaving orphaned nodes

New Components

  • src/collector/delta.py — delta scan drive logic
  • DeltaState Neo4j nodes for persisting delta links between scans
  • ScanRun.scanType property (full | delta)

Improvements

  • _make_request refactored to support extra headers (Prefer headers for delta)
  • seed_delta_link validates API response defensively
  • Content-only delta changes maintain proper graph relationships

Full Changelog: v0.4.0...v0.5.0

v0.4.0

20 Feb 09:19

Choose a tag to compare

Full Changelog: v0.3.0...v0.4.0

v0.3.0

20 Feb 08:08

Choose a tag to compare

Full Changelog: v0.2.0...v0.3.0

v0.2.0

18 Feb 21:44

Choose a tag to compare