From da545ba9b93759e203116d0d000d184fd288b5a8 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Sun, 28 Jun 2026 14:24:18 -0400 Subject: [PATCH] docs: mark P5-1 + search filters/recent done; add M1-M3 test steps Co-Authored-By: Claude Opus 4.8 --- LOTUS_TESTING.md | 34 ++++++++++++++++++++++++++++++++++ LOTUS_TODO.md | 8 ++++---- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/LOTUS_TESTING.md b/LOTUS_TESTING.md index b1db5beaa..02998f623 100644 --- a/LOTUS_TESTING.md +++ b/LOTUS_TESTING.md @@ -361,6 +361,40 @@ Trigger a desktop/browser notification for a new message. --- +## M. New features (this round) + +### M1. Search: `has:image` / `has:file` / `has:video` filters + +1. Open message search (in a room with shared images/files/videos in history). +2. Run a broad search, then toggle the **Images**, **Files**, **Video** chips (in the filter bar, next to "Has link"). + +**Expected:** + +- Each chip narrows the visible results to that message type; multiple active chips = union (any of them). +- Toggling them off restores the full results. The existing room/sender/date/has-link filters still work alongside. +- **Known limitation (by design):** filtering is client-side over already-fetched results, so the visible count can be lower than the server's total for that query — paginating/loading more pulls in more to filter. Confirm this reads acceptably. + +### M2. Search: recent searches + +1. Run a few different searches, then **clear the search box** and focus it. + +**Expected:** your last (up to 10) distinct searches appear as clickable chips; clicking one re-runs it. A **Clear** affordance wipes the list. The list **persists across a page refresh** (localStorage). + +### M3. Custom accent color (non-TDS themes) — ⚠️ needs your visual judgment + +1. Make sure **Lotus Terminal (TDS)** is **off**. Settings → Appearance → **Custom Accent Color** → pick a color. + +**Expected:** + +- The app's accent (buttons, selected/active states, links, primary chips) recolors to your choice **live**. +- **Look critically at quality** (this is the part I can't verify): button **text legibility** (OnMain contrast) on the accent buttons; **hover/active** shades; and **selected-row / chip** backgrounds (the translucent "Container" tints). Try a **light** color and a **dark** color and a **saturated** one. + - If a dark accent makes selected-row text (OnContainer) hard to read, tell me — that's the one spot in the auto-derived palette most likely to need tuning. +- **Reset** clears it back to the theme default. +- Turn **Lotus Terminal ON** → the custom accent should be **ignored** (TDS fixed palette wins) and the picker shows a "non-TDS only" note; turn it back off → custom accent returns. +- Reload → the chosen accent **persists**. + +--- + ## Priority if you're short on time 1. **A4** (in-call banner) + **A3** (ringtone) — newest, most logic, hardest to reproduce. diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index 5647409b1..35ee05a76 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -205,9 +205,9 @@ Features: **Remaining for parity with Discord/Slack:** -- [ ] `has:image` / `has:file` / `has:video` — msgtype filters (require client-side post-filtering, no server API) +- [x] `has:image` / `has:file` / `has:video` — msgtype filters (client-side post-filter) ⚠️ UNTESTED - [ ] Pinned messages filter -- [ ] Saved searches / search history +- [x] Recent searches / search history (last 10, localStorage) ⚠️ UNTESTED --- @@ -262,7 +262,7 @@ Features: ## Priority 5 — Gamer / Aesthetic / Customization -### [ ] P5-1 · Custom Accent Color Picker (non-TDS mode only) +### [x] P5-1 · Custom Accent Color Picker (non-TDS mode only) ⚠️ UNTESTED **What:** A hex/HSL color picker in Settings → Appearance. Chosen color replaces the primary accent throughout the UI: buttons, badges, active states, highlights, presence dot, links. Applied via a CSS custom property override injected into ``. **IMPORTANT:** This feature is completely inactive when TDS is enabled — TDS has its own fixed palette. Add this setting under a "Non-TDS Themes" section that is hidden when TDS is active. @@ -593,7 +593,7 @@ Exhaustive, low-level implementation details for backlog items. Follow these pat - Route the mic `MediaStream` and the clip source to the destination node. - Pass the destination's `.stream` to the call bridge. -> ⚠️ **[Gemini_Found — CORRECTED]** Gemini originally suggested using LiveKit's `LocalAudioTrack.replaceTrack()` to mix audio into the call stream. This is **not possible** from Lotus Chat's realm: Element Call runs in a **cross-origin iframe** controlled via `matrix-widget-api` (postMessage). LiveKit's JS SDK and its `LocalAudioTrack` live inside EC's sandboxed context — inaccessible from our code. This directly contradicts the confirmed constraint already listed in the Server Capabilities table: *"Cindy CANNOT inject audio into EC call stream — In-call soundboard must be redesigned as local-only."* The soundboard must be a local-playback-only feature (output through the user's speakers, not mixed into the call audio stream). +> ⚠️ **[Gemini_Found — CORRECTED]** Gemini originally suggested using LiveKit's `LocalAudioTrack.replaceTrack()` to mix audio into the call stream. This is **not possible** from Lotus Chat's realm: Element Call runs in a **cross-origin iframe** controlled via `matrix-widget-api` (postMessage). LiveKit's JS SDK and its `LocalAudioTrack` live inside EC's sandboxed context — inaccessible from our code. This directly contradicts the confirmed constraint already listed in the Server Capabilities table: _"Cindy CANNOT inject audio into EC call stream — In-call soundboard must be redesigned as local-only."_ The soundboard must be a local-playback-only feature (output through the user's speakers, not mixed into the call audio stream). ---