[QA] §R Discovery-pass fixes DP1–DP18: correctness, a11y/UX, TDS colours, refactor regression pass #187
Open
opened 2026-09-17 23:24:10 -04:00 by jared
·
7 comments
No Branch/Tag Specified
lotus
fix/call-theme-before-ready
fix/dfn-worklet-file
test/lotus-feature-e2e
fix/own-presence-display
fix/sso-uia-desktop
seasonal/lunar
seasonal/newyear
seasonal/christmas
chore/build-hygiene
fix/status-save-speed
chore/typing-hygiene
feat/settings-search
feat/settings-pages
chore/security-deps
feat/settings-quick-wins
feat/data-export
feat/stale-sessions
feat/landscape-call
feat/expected-devices
feat/oauth-detect
chore/ec-0.28
chore/sdk-44
feat/key-upload-recovery
feat/keychain-session
feat/vimeo-events
feat/widget-always-on-screen
feat/call-summary-details
feat/widget-popout
fix/ios-long-press
chore/any-cleanup
chore/soundboard-mic-mix
fix/phone-call-controls
fix/a11y-axe-findings
fix/copy-and-reddit-context
feat/about-build-info
fix/schedule-24h
fix/connecting-strip
fix/ui-polish-batch
fix/outbox-multi-tab
fix/widget-share-hardening
fix/side-panel-width
fix/topic-markdown
fix/acl-ip-literals-default
feat/decorations-host
fix/call-disconnected-bar
fix/linux-update-verify
perf/lazy-settings
fix/dnd-busy-presence
fix/threads-stay-unread
fix/private-note-wording
fix/audio-output-frame-ids
fix/pip-minimise
fix/translate-unavailable-copy
fix/status-expiry-account-data
ci/reseed-bundle-budget
fix/close-no-tray
fix/soundboard-not-permitted
fix/denoise-state-notice
docs/features-catchup
fix/desktop-settings-section
fix/dev-denoise-theme
fix/pwa-manifest
fix/translate-feedback
fix/consent-retry-snooze
fix/strip-metadata-packs
fix/preview-deceptive-links
fix/embed-ogurl-provider
fix/settingtile-nesting
fix/shortcuts-dialog
fix/forward-encryption-warning
fix/compress-alpha-anim
fix/screenshare-double-toast
fix/sw-reply-checks
fix/pip-default-position
fix/inapp-toast-permission
fix/mute-timers-account-data
fix/policy-dedupe
fix/nudge-dismissed-strip
fix/kuma-plain-text
fix/rejoin-dm
fix/search-edit-dupes
fix/room-filter-empty
fix/emoji-board-escape
fix/call-failed-retry
fix/share-links-lotus
fix/poll-vote-local-echo
fix/scheduled-from-server
fix/delayed-restart-dedupe
fix/decline-references-notification
fix/stall-watchdog
fix/filtered-timeline-double-count
fix/call-listener-limit
fix/voice-room-no-room-ping
fix/reactions-collapse-loop
fix/group-call-permission
fix/dialog-enter-closes
fix/delivery-status-live
fix/room-upgrade-lotus-state
fix/quiet-hours-tick
fix/logout-wipe-leftovers
fix/inter-font-name
fix/retention-floor-grace
fix/firefox-persist-hang
fix/phantom-ring-after-reload
fix/local-room-names-rest
fix/missed-call-voice-rooms
fix/animated-bg-compositor
fix/link-safety-bypasses
fix/e2e-register-403
fix/local-room-names-everywhere
fix/collapsible-messages
fix/logout-volume-residue
fix/enter-newline-device-local
fix/dnd-restore-status
fix/presence-sticky
fix/location-confirm
fix/reminders-stick
fix/voice-full-distinct-users
fix/presence-pagehide-status
fix/gif-card-aspect
deps/npm-audit-fixes
security-nudge
linux-package-updates
audit-brace-expansion
server-status-banner
desktop-keychain-mirror
desktop-call-origin
clock-skew-lag
offline-outbox
desktop-lotus-links
poll-ui
calls-open-in-browser
screenshare-prompt
call-origin-split
update-packages
sw-fix
read-me-update
image-path-changes
dm-calls
fix-2469
renovate/element-hq-element-call-embedded-0.x
renovate/npm-i18next-http-backend-vulnerability
renovate/npm-vite-vulnerability
dev
docs-update
more-theme
fix-257
imporve-thread-reply
revert-2402-improve-menu-congestion
mxidColor-toggle
update-sw-main-msg
v4.11.1
v4.10.5
v4.10.4
v4.10.3
v4.10.2
v4.10.1
v4.10.0
v4.9.1
v4.9.0
v4.8.1
v4.8.0
v4.7.1
v4.7.0
v4.6.0
v4.5.1
v4.5.0
v4.4.0
v4.3.2
v4.3.0
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.0
v4.0.3
v4.0.0
v3.2.0
v3.1.0
v3.0.0
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v1.8.2
v1.8.1
v1.8.0
v1.7.0
v1.6.1
v1.6.0
v1.5.1
v1.5.0
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.1
v1.2.0
v1.1.0
v1.0.0
Labels
Clear labels
a11y
area: appearance
area: auth-session
area: build-ci
area: calls
area: desktop
area: media
area: messaging
area: mobile
area: moderation
area: navigation
area: notifications
area: settings
area: threads
bug
dependencies
docs
duplicate
enhancement
help wanted
invalid
needs-human-review
performance
planning
priority: critical
priority: high
priority: low
priority: medium
qa
question
research
security
tech-debt
ux
wontfix
Accessibility: keyboard, screen reader, contrast, motion
Client area: appearance
Client area: auth-session
Client area: build-ci
Client area: calls
Client area: desktop
Client area: media
Client area: messaging
Client area: mobile
Client area: moderation
Client area: navigation
Client area: notifications
Client area: settings
Client area: threads
Something is not working
Third-party package versions and advisories
README / LOTUS_* docs wrong or missing
This issue or pull request already exists
New feature
Need some help
Something is wrong
Re-render storms, leaks, heavy work on hot paths
Data loss, security hole, or crash on a main path
Broken feature or serious usability problem
Minor issue or polish
Wrong behaviour in an edge case or notable degradation
Manual QA: shipped, needs a human in a real environment
More information is needed
XSS, unsafe URLs, data leaks, auth/session
Code health, dead code, fragile patterns
Usability or visual inconsistency
This won't be fixed
Milestone
No items
No Milestone
Manual QA backlog
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: LotusGuild/cinny#187
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Migrated from
LOTUS_TESTING.md§R on 2026-09-17 — the file is now reference-only.How to report: tick each item as it passes; on FAIL comment with what you saw vs expected, browser/OS, web (chat.lotusguild.org) vs desktop (Tauri), theme, and any browser-console errors. Screenshots for anything visual.
Checklist
Agent-surveyed + TPVR-verified low/med issues, now fixed (commits
8eb961b6db8643266cf18c3b165714e18c0e2b42e545706cb1ee3ada4fc3f7a3101e41164fa4327ac2598d21). Behavioral items have concrete checks; the refactors just need a "still works" regression pass.Correctness
/kick @nobody:serverin a room where you lack permission, or/joina bad alias. Expected: an error toast appears (not a silent no-op); a successful command still clears the composer normally.a11y / UX (needs a screen reader + a narrow viewport)
TDS colors (Lotus Terminal theme)
--lt-*tokens), NOT bright dark-mode cyan/red. TDS dark still looks right; non-TDS themes unchanged.Refactor regression pass (no behavior change intended)
Behavioral DP items verified on the local dev homeserver with Playwright:
/joinbad alias → "Command failed: The /join command failed. Please try again." ✓./kickwithout permission → silent (documented in code; filed #216). Successful commands clear the composer ✓io.lotus.bookmarksaccount data written ✓ (reminders verified under #180, notes not exercised)RoomViewTyping.tsx) — not the call count itself, but the neighbouring typing live region announced "undefined, undefined, undefined and -3 others are typing" whenever nobody was typing (every room load). Fixed in the next commit.Leaving open for the remaining rows.
More rows verified headlessly (2026-09-24, local Synapse + Playwright):
e06600af). Esc closed the picker, but focus landed in the composer, not on the GIF button. The picker's focus trap did return focus correctly; then RoomView's "start typing → focus composer" handler treated Escape as a typing key and moved it. Escape (plus CapsLock, Insert, ContextMenu, PrintScreen, Pause) is now excluded. After the fix, Esc → focus on "Insert GIF" at 1300 px and at 320 px, and the 320 px picker fits with 0 px page overflow.aria-pressedfalse → true → false with Enter; the date range is set via Enter on "Last week" and cleared with Enter on the menu's Clear (chip back to "Date range").role="timer"with noaria-live, so it can be queried without spamming.rgb(181,0,31)(--lt-accent-red#b5001f); read-receipt pill border/bg =#0062b8at 30 % / 7 %. Dark: ✕ =rgb(255,45,85)(#FF2D55), pill =#00D4FF. So both follow the theme tokens, not hard-coded dark-mode colours.Note for anyone re-testing DP14: receipt pills are hidden while Settings → Privacy → hide activity is on (
hideReadReceipts={hideActivity}), which is expected, but it looks like a failure if the test account has it on.Still open: DP3, DP5, DP6 (two sessions or calls), DP7/8/12 (screen-reader wording), DP15-18.
More rows (2026-09-24):
io.lotus.user_notes, survives a reload (field shows it), and clearing it removes it from account data.m.room.topicon the server matches, and the settings view and room header show it.fix(embeds)commit): the Steam card showedThe "Perpetual Testing Initiative", because Steam double-encodes its meta tags. Preview text is now entity-decoded once where it's fetched, and it rendersThe "Perpetual Testing Initiative".Still open: DP3, DP5, DP6 (two sessions or calls), DP7/8/12 (screen reader), DP16 (account-data settings toggle, largely exercised by settings sync), DP18.
DP3: was still broken; now fixed (
fix(status)commit). Two sessions of the same user on local Synapse:Cause: a device never receives its own user's presence changes made on other devices (B's presence store logged only its startup values). The earlier fix mirrored remote changes from inside the Profile page, so it could never fire. Heartbeats now GET our own presence and send the server's current status, falling back to the local copy on error, when invisible, or within 15 s of a local save.
DP6: ✅, plus an a11y bug found and fixed.
org.matrix.msc4310.rtc.decline) is forced to fail (aborted). Pressing Reject still dismisses the ringing overlay, and the ring sound stops (no new oscillators over the next 2.5 s).fix(a11y)commit): the full-screen incoming-call overlay, shown when you aren't already in a call, had no role or accessible name on any ancestor of its buttons. A screen reader got a bare button and no "call ringing" cue. It is nowrole="alertdialog",aria-modal="true", labelled "Incoming voice call from bob". The in-call banner variant already hadrole="alert".DP7/8 — fixed; DP12 — present. Checked in a live call by reading what assistive tech is given (the exact speech still needs a real screen reader):
fix(a11y): call toggles…). Those same buttons also carriedaria-pressed, which contradicted the label: "Deafen" hadpressed=truewhile you were not deafened (read as "Deafen, pressed"), and mic/screenshare had a pressed state in one bar but not the other. Since the labels already name the action,aria-pressedis removed from all nine toggles — now consistent in both bars and both states.role="status" aria-live="polite" aria-atomicregion reading "N in call", updated with the count; call-ended announcements have their own region outside the embed (#168).Last batch (2026-09-24):
io.lotus.settingson the server (false → true), and toggling back restoresfalse.m.room.memberevent from bob, so bob's receipt moves onto it (a user's own event counts as read). A pill that sat on an older message therefore disappears rather than "updating in place". That's receipt semantics, not a bug.Remaining unticked: DP5 (soundboard packs on room switch; needs packs set up in two rooms) and the parts that need a real screen reader or device (the audio of DP7/8/12). Everything else in §R is verified.