From 89100b83aa2a4136b5a8005fe7a7eb50197723b5 Mon Sep 17 00:00:00 2001 From: Eddy de Vink Date: Wed, 2 Sep 2026 08:47:58 +0200 Subject: [PATCH] One-line preview rendering: bold name + link + topic, nameless rooms single link; v2.1.2 --- maubot.yaml | 2 +- roomsoverview.mbp | Bin 5072 -> 5113 bytes roomsoverview.py | 24 ++++++++++++++---------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/maubot.yaml b/maubot.yaml index c343de5..3f17638 100644 --- a/maubot.yaml +++ b/maubot.yaml @@ -1,6 +1,6 @@ maubot: 0.1.0 id: nl.roomsoverview -version: 2.1.0 +version: 2.1.2 license: MIT modules: - roomsoverview diff --git a/roomsoverview.mbp b/roomsoverview.mbp index 6fac14d5fecb5d9288598e21a8810daa14e4efbc..fd48316e2afec3d6109f1de6aa5568776b0ed442 100644 GIT binary patch delta 4443 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 delta 4441 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 diff --git a/roomsoverview.py b/roomsoverview.py index f937bbc..9e69e09 100644 --- a/roomsoverview.py +++ b/roomsoverview.py @@ -303,21 +303,25 @@ class RoomsOverviewPlugin(Plugin): lines = [] for r in rooms: - name = _escape_md( - r.get("display_name") or r.get("canonical_alias") or r["room_id"] - ) - alias = r.get("canonical_alias") + display = r.get("display_name") or "" + alias = r.get("canonical_alias") or "" room_id = r["room_id"] link_target = quote(alias if alias else room_id, safe="!") member_count = r.get("member_count") - topic = _escape_md((r.get("topic") or "").strip().replace("\n", " ")) + topic = (r.get("topic") or "").strip().replace("\n", " ") suffix = f" ({member_count} leden)" if member_count is not None else "" - addr = f"[{alias if alias else room_id}](https://matrix.to/#/{link_target})" - if topic: - block = f"**{name}**{suffix}\n{topic}\n{addr}" + if display: + label = _escape_md(display) else: - block = f"**{name}**{suffix}\n{addr}" - lines.append(block) + label = room_id + link = f"[{_escape_md(alias) if alias else room_id}](https://matrix.to/#/{link_target})" + if display: + line = f"* **{label}**{suffix} — {link}" + else: + line = f"* {link}{suffix}" + if topic: + line += f" — {_escape_md(topic)}" + lines.append(line) chunk_size = max(1, int(self.config.get("rooms_per_message", 50) or 50)) chunks = [lines[i : i + chunk_size] for i in range(0, len(lines), chunk_size)]