Drexo v0.2.1 — Sharing fixes + Inbox retirement
Post-login redirect loop fixed, dashboard page crash fixed, tenant Inbox retired in favour of /partages.
Drexo v0.2.1 — Sharing fixes + Inbox retirement
Stabilisation release following v0.2.0. Three bugs found after the unified-sharing rollout, plus a UX cleanup aligned with the new architecture.
Fixes
/↔/loginredirect loop after login. An RLS policy inadvertently added topersonal_dashboardsqueriedshare_grants(itself RLS-gated), causing infinite recursion (42P17). The Supabase JS SDK swallowed the error asdata: null, and the/page silently fell through to its "redirect to /login" fallback instead of opening the dashboard. Migration 0079 restores the owner-only policy; share recipients still see shared dashboards via theget_dashboard_for_viewRPC (SECURITY DEFINER, RLS- bypassing).- Session cookies not set on the
/auth/confirmredirect (magic link + Google/Microsoft OAuth). Next 16 doesn't auto-merge cookies written vianext/headerscookies()into a manually-constructedNextResponse.redirect(). The auth route handlers now capture cookies into a local list and explicitly attach them viaresponse.cookies.set()before returning. - Dashboard page crash on login. The
list_dashboard_share_grantsRPC added in Priority A declared anid uuidcolumn in itsreturns table (…)clause, creating an ambiguous reference withpersonal_dashboards.idin the function body (42702). Every/dashboards/<id>render rejected its parallel fetch. Fixed by qualifying the column reference (pd.idinstead of bareid). - Hourly-heatmap colour ceiling — pinned to the per-meter 90-day peak instead of a global cap, as promised by v0.2.0 but regressed during the same cycle. Restored.
Removed
-
The tenant Inbox is retired (migration 0080). Previously the left rail rendered an amber "Inbox" folder under each organisation, collecting both tenant-owned unplaced devices and devices shared TO the organisation without placement. Both flows are now covered by the new architecture:
- Shared devices —
/partages→ "Shared zones with me" → expand zone → "Place in my tree" button on each device. - Owned unplaced devices —
/settings/org/<slug>/locations(the tree editor) or the placement editor on/devices/<id>.
Keeping the Inbox duplicated these surfaces and confused the recipient flow.
- Shared devices —
Migration
No manual action required. Migrations 0079 (RLS recursion revert) and 0080 (Inbox retirement) are backwards-compatible with the existing front-end.
Drexo v0.2.0 — Unified sharing + meter readability
Personal dashboards are now shareable, public location URLs render the location's dashboard, meter heatmap colours scale to each meter's peak, and 'awaiting next reading' cells finally stand apart from real data gaps.
Drexo v0.3.0 — Roles, scopes, per-role menus + personalization
Access becomes capability × scope, organisations create custom roles with their own menu, tag-based scope arrives, and everyone can personalize their navigation (favourites, hide-for-me). Navigation-visibility hardening.