docs: reconcile tab-title + collapsible-message threshold claims with code
Two bug-hunt findings that were doc inaccuracies, not code bugs: - Tab title "(N)" is the mention/highlight count (+ "·" for other unread), mirroring the favicon — intentional. LOTUS_FEATURES said "N unread messages"; corrected to describe the actual highlight-count behavior. - Collapsible long messages use a fixed COLLAPSE_MAX_HEIGHT (320px ≈ 20 lines); the doc claimed a Settings → Appearance control that never existed. Corrected to describe the fixed threshold rather than build a marginal per-user setting. Verified against ClientNonUIFeatures.tsx and MsgTypeRenderers.tsx. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+6
-5
@@ -1019,10 +1019,12 @@ Fixed by replacing the single read with a `readStatus()` function called inside
|
||||
|
||||
The browser tab title updates to reflect unread state:
|
||||
|
||||
- `(N) Lotus Chat` — N unread messages
|
||||
- `· Lotus Chat` — unread activity without a specific count
|
||||
- `(N) Lotus Chat` — N mentions / keyword highlights (the count is highlights, not total unread)
|
||||
- `· Lotus Chat` — unread messages without a mention (activity, no specific count)
|
||||
- `Lotus Chat` — no unread items
|
||||
|
||||
The favicon mirrors this (highlight badge / unread dot / default).
|
||||
|
||||
### Extended Profile Fields
|
||||
|
||||
Supports MSC4133 custom profile fields via `PUT /_matrix/client/unstable/uk.tcpip.msc4133/{userId}/{field}`:
|
||||
@@ -1094,10 +1096,9 @@ OS-level notifications are unchanged and still fire when the window is not focus
|
||||
|
||||
### Collapsible Long Messages
|
||||
|
||||
Messages exceeding a configurable line threshold are truncated with a "Show more" toggle.
|
||||
Messages exceeding a fixed height threshold are truncated with a "Show more" toggle.
|
||||
|
||||
- Default threshold: 20 lines
|
||||
- Threshold is configurable in **Settings → Appearance**
|
||||
- Threshold: a fixed `COLLAPSE_MAX_HEIGHT` of 320px (≈ 20 lines) — not currently user-configurable
|
||||
- Uses CSS `max-height` + `overflow: hidden` with a smooth transition
|
||||
- Transition is disabled when `prefers-reduced-motion: reduce` is active
|
||||
|
||||
|
||||
+2
-2
@@ -120,10 +120,10 @@ Per-slice bug hunt (5 agents: theming · calls · messaging · threads/presence/
|
||||
**Threads / presence / UX**
|
||||
|
||||
- [x] **[Med]** `PresenceBadge` renders DND (`unavailable` + `status_msg:'dnd'`) as a **yellow "Idle"** badge + label, while `PresenceRingAvatar` correctly shows **red** — inconsistent. Give the badge the same `status === 'dnd' → Critical` + "Do Not Disturb" branch. `Presence.tsx:17-59`. **FIXED** (`29ff1654`): badge now matches the ring + settings picker (Critical / "Do Not Disturb", `'dnd'` sentinel line suppressed).
|
||||
- [ ] **[Med]** Collapsible-message threshold is hardcoded (`COLLAPSE_MAX_HEIGHT = 320`), but the docs claim it's "configurable in Settings → Appearance (default 20 lines)" — unimplemented. Add the setting + control, or fix the doc. `MsgTypeRenderers.tsx:38`.
|
||||
- [x] **[Med]** Collapsible-message threshold is hardcoded (`COLLAPSE_MAX_HEIGHT = 320`), but the docs claim it's "configurable in Settings → Appearance (default 20 lines)" — unimplemented. Add the setting + control, or fix the doc. `MsgTypeRenderers.tsx:38`. **FIXED** (doc): LOTUS_FEATURES now describes the fixed 320px (≈20-line) threshold; the full 320px is sensible and a per-user setting wasn't worth the surface — reconciled the doc rather than build a marginal setting.
|
||||
- [x] **[Med/Low]** In-app toast container has no visible cap / scroll — a burst of messages across rooms while focused stacks toasts unbounded and can cover the viewport. Cap visible N or `overflow-y:auto` + max-height. `LotusToastContainer.tsx:223-247`. **FIXED** (`1963222d`): queue capped at 5 in the atom writer (drops oldest non-sticky, never the newest or a sticky action toast) + container maxHeight/overflow + scroll-to-newest; +4 tests. (3 review passes — the 2nd caught a newest-dropped edge when the cap is full of stickies.)
|
||||
- [x] **[Low]** "Unread First" room sort leaves the (larger) read portion unordered — no activity fallback for the equal-unread case. `Home.tsx:213-222`. **FIXED** (`1963222d`): `factoryRoomIdByUnread` breaks ties by recent activity; relocated to `utils/sort.ts` (pure) + unit-tested.
|
||||
- [ ] **[Low]** Tab title "(N)" counts mentions, not unread messages (doc says unread) — reconcile doc vs. code. `ClientNonUIFeatures.tsx:120-123`.
|
||||
- [x] **[Low]** Tab title "(N)" counts mentions, not unread messages (doc says unread) — reconcile doc vs. code. `ClientNonUIFeatures.tsx:120-123`. **FIXED** (doc): the mention-count + unread-dot behavior is intentional (mirrors the favicon); LOTUS_FEATURES now describes it accurately (N = highlights, `·` = other unread).
|
||||
|
||||
**Rooms / moderation / notifications / infra / desktop**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user