Skip to content

v0.6.0

Latest

Choose a tag to compare

@magudb magudb released this 27 Feb 13:06

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