You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fix: session cleanup, delete account storage, stale exam cache, and UI polish (v1.9.4)
fix(auth): remove direct storage.objects DML from delete_user_account RPC
Supabase blocks DELETE FROM storage.objects directly; extract avatar
cleanup to the client using the Storage JS API before calling the RPC.
Adds migration 20260223000001_fix_delete_user_account_storage.sql.
fix(session): clear sb-* Supabase auth cookie on all logout paths
- /api/logout: now expires sb-{projectRef}-auth-token and .0/.1 chunks
- proxy Scenario A: unauthenticated redirect now deletes the sb-* cookie
- proxy terms loop: was redirecting to /logout (404); now redirects to /
with full cookie clearing (ezygo_access_token, terms_version, csrf_token,
terms_redirect_count, sb-*)
- login-form: clears localStorage and prefetchedSettings from sessionStorage
on mount when no active session is detected (csrf_token_memory preserved)
fix(scores): invalidate exam query keys on semester/year change
useSetSemester and useSetAcademicYear mutations now invalidate ["exams"],
["exam-answers"], and ["exam-questions"] in their onSuccess handlers,
preventing stale data on the /scores page after settings changes.
feat(loading): add optional message prop to Loading component
Renders a muted caption below the spinner when minimal={true}, used on
the scores page: "Waiting on Ezygo to stop ghosting us 👻"
fix(notifications): fix empty state vertical spacing
Replace py-24 / flex-1 (too tall) with min-h-[50vh] on the empty state
container for balanced proportional spacing.
* fix: PR review feedback — loading JSDoc, delete-account storage timeout, proxy cookie helper, logout secure flag (#471)
* Initial plan
* fix: apply PR review feedback (loading JSDoc, delete-account timeout, proxy helper, logout secure flag)
Co-authored-by: devakesu <61821107+devakesu@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: devakesu <61821107+devakesu@users.noreply.github.com>
* fix: paginate avatar cleanup, use logger, guard storage clear on lock timeout (#472)
* Initial plan
* fix: paginate avatar list in delete-account, use logger, guard storage clear on lock timeout
Co-authored-by: devakesu <61821107+devakesu@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: devakesu <61821107+devakesu@users.noreply.github.com>
* fix(delete-account): wrap avatar storage cleanup in try/catch; add login-form storage cleanup tests (#473)
* Initial plan
* fix(delete-account): wrap avatar storage cleanup in own try/catch; add login-form storage cleanup tests
Co-authored-by: devakesu <61821107+devakesu@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: devakesu <61821107+devakesu@users.noreply.github.com>
* fix(logout): clear terms_redirect_count on logout; fix proxy comment (#474)
* Initial plan
* fix(logout): clear terms_redirect_count on logout and fix proxy comment
Co-authored-by: devakesu <61821107+devakesu@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: devakesu <61821107+devakesu@users.noreply.github.com>
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
0 commit comments