From 8a461610f492f49aa8accc27f696004f42776d6f Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Fri, 24 Jul 2026 19:57:34 -0400 Subject: [PATCH] fix(low-tail): MLocation permalink uses validated floats; PolicyListViewer doc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MLocation "Open in OpenStreetMap" permalink built its URL from the raw parseGeoUri strings (location.latitude/longitude) while the embedded map iframe used the parseFloat + isFinite-validated lat/lon. Use lat/lon in the permalink too, so a malformed geo: substring can't reach the URL (they're already proven finite a few lines above and used identically in mapSrc). - LOTUS_FEATURES claimed the Policy List Viewer has "Subscribe (join) / unsubscribe (leave) controls for each list" and lists subscribed lists. Verified against PolicyListViewer.tsx: it's a room-ID/alias input viewer that displays a joined policy room's rules read-only — no subscribe controls, no subscribed-lists listing. Corrected the doc to match. Two low-tail bug-hunt findings from LOTUS_TODO. Gate-green (tsc, eslint, prettier, build). Co-Authored-By: Claude Opus 4.8 --- LOTUS_FEATURES.md | 6 +++--- src/app/components/message/MsgTypeRenderers.tsx | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/LOTUS_FEATURES.md b/LOTUS_FEATURES.md index 4c2c94a9b..f3c4253e2 100644 --- a/LOTUS_FEATURES.md +++ b/LOTUS_FEATURES.md @@ -1289,9 +1289,9 @@ Features: Accessible via **Room/Space Settings → Policy Lists** (admin only). -- Displays the room's subscribed policy lists in read-only format -- Subscribe (join) and unsubscribe (leave) controls for each list -- Enforcement is delegated to Draupnir or equivalent tooling; Lotus only manages list membership +- Enter a policy-list room's **ID or alias** (one you have already joined) to view its `m.policy.rule.user` / `.room` / `.server` rules in read-only format +- Viewer only — there are **no** subscribe/unsubscribe controls and no listing of "subscribed" lists; join or leave the policy-list room itself the normal way +- Enforcement is delegated to Draupnir or equivalent tooling --- diff --git a/src/app/components/message/MsgTypeRenderers.tsx b/src/app/components/message/MsgTypeRenderers.tsx index fe7f418ae..379068c31 100644 --- a/src/app/components/message/MsgTypeRenderers.tsx +++ b/src/app/components/message/MsgTypeRenderers.tsx @@ -685,7 +685,7 @@ export function MLocation({ content }: MLocationProps) {