fix(settings): valid HTML in setting tiles; start uploads in an effect (#291) #402

Merged
jared merged 1 commits from fix/settingtile-nesting into lotus 2026-10-18 05:37:07 -04:00
Owner

Refs #291. This fixes the nesting and the render-time upload start. The "key" prop is being spread into JSX warning (Jump to Time, Invite) comes from a shared component and stays open.

Changes

  • SettingTile: the description now renders as <Text as="div">. Many tiles pass blocks as the description (badges, <Box>, <Text>), which made <div>/<p> inside <p>, invalid HTML that React warned about on every Settings page. One change fixes every tile, including Room Settings → Call Permissions / Quality.
  • UploadCardRenderer: startUpload() moves from render into a useEffect. Since the desktop taskbar-progress hook subscribes to the upload atoms, the render-time start updated another component mid-render ("Cannot update a component (TauriDesktopFeatures) while rendering…"). startUpload is a stable useCallback and the effect is guarded by the Idle status, so it starts once.

Verified with a DOM scan for p div, p p on each Settings page:

  • Before: General 8, Account 4, Notifications 0, Devices 0.
  • After: 0 on every page.

tsc clean · unit tests pass · ESLint clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5

Refs #291. This fixes the nesting and the render-time upload start. The `"key" prop is being spread into JSX` warning (Jump to Time, Invite) comes from a shared component and stays open. **Changes** - **SettingTile:** the description now renders as `<Text as="div">`. Many tiles pass blocks as the description (badges, `<Box>`, `<Text>`), which made `<div>`/`<p>` inside `<p>`, invalid HTML that React warned about on every Settings page. One change fixes every tile, including Room Settings → Call Permissions / Quality. - **UploadCardRenderer:** `startUpload()` moves from render into a `useEffect`. Since the desktop taskbar-progress hook subscribes to the upload atoms, the render-time start updated another component mid-render ("Cannot update a component (TauriDesktopFeatures) while rendering…"). `startUpload` is a stable `useCallback` and the effect is guarded by the Idle status, so it starts once. **Verified** with a DOM scan for `p div, p p` on each Settings page: - **Before:** General 8, Account 4, Notifications 0, Devices 0. - **After:** **0 on every page**. `tsc` clean · unit tests pass · ESLint clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared added 1 commit 2026-10-17 23:51:23 -04:00
fix(settings): valid HTML in setting tiles; start uploads in an effect (#291)
CI / Build & Quality Checks (pull_request) Successful in 4m24s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 11s
CI / Playwright smoke (e2e) (pull_request) Successful in 15m43s
6f7a8f64e2
SettingTile rendered its description in a <p>, and many tiles pass
blocks (badges, Box, Text), so Settings had <div>/<p> inside <p> and
React warned on every page. Render it as a <div>. UploadCardRenderer
called startUpload() during render, which now updates the desktop
taskbar-progress hook mid-render; start it from an effect instead.

Refs #291

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared merged commit 80ef1179c9 into lotus 2026-10-18 05:37:07 -04:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#402