feat(settings): new settings pages, collapsed pickers, privacy choice, grouped calls (#453 phase 2) #466

Merged
jared merged 3 commits from feat/settings-pages into lotus 2026-10-25 12:45:41 -04:00
Owner

Phase 2 of the settings audit #453 (report: https://claude.ai/artifact/L34kAp1L7jdvomjHHbeuzZ), approved by the owner.

Fixes #459, fixes #460, fixes #461, fixes #462, and completes #458 (the key export moves to Privacy & security).

#459, General split into pages people would look for.

  • General held 76 of the ~110 settings, about 11 screens. The sidebar is now:
    • Account;
    • Appearance;
    • Messages (incl. editor, date and time);
    • Notifications;
    • Calls & audio;
    • Privacy & security (privacy options plus the former Devices page);
    • Data & storage (storage, sync, your data);
    • Desktop (desktop app only);
    • Emojis & stickers;
    • Advanced (former Developer Tools, plus "show hidden events" and "legacy username colour");
    • About.
  • The longest page is now about 3 screens (Appearance, 1,962 px; it was 6,957 px). Settings opens on Account.
  • Deep links keep working: "devices" → Privacy & security, the old "general" → Appearance, and the desktop update notice → Desktop.
  • Text that named old pages is updated: the key-upload banner, Room retention, the close-behaviour prompt and the update notice.
  • The push-rule editor gets one line explaining the Matrix terms, and the remaining Title Case labels are fixed.

#460, big pickers collapsed. Chat background, seasonal theme and avatar decoration show the current choice and a Change button. The first two close after a pick; decorations keep their Save step.

#461, privacy.

  • Both link-preview switches move into Privacy.
  • The two overlapping receipt switches become one choice: Everyone / Private read receipts / Hide my activity.
  • This maps exactly onto the existing settings, so there's no migration; see the note on #461 for why it's one choice rather than two.

#462, Calls & audio grouped: Joining · Microphone and noise · Push to talk and hotkeys · Sounds · Quality · Soundboard, the same in every mode. No setting changed.

Also: the app CSS hides native radio inputs, so the receipt choice and the your-data import choice now use the folds RadioButton; the selection was invisible before.

Tested in the browser on a build of this branch:

  • the menu shows the new pages and Desktop stays hidden in a browser;
  • the page heights are as above;
  • Calls shows all six groups;
  • each privacy option sets the intended pair of settings (everyone → off/off, private → private only, hidden → both);
  • link previews are on Privacy and gone from Messages.

Playwright, 18/18: security-nudge (deep link to Privacy & security), stale-sessions, your-data (Data & storage), key-upload-recovery, a11y (incl. an axe audit of settings and the updated menu snapshot), and boot. Unit tests: 1,440 pass. Lint is at 29.

🤖 Generated with Claude Code

https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5

Phase 2 of the settings audit #453 (report: https://claude.ai/artifact/L34kAp1L7jdvomjHHbeuzZ), approved by the owner. Fixes #459, fixes #460, fixes #461, fixes #462, and completes #458 (the key export moves to Privacy & security). **#459, General split into pages people would look for.** - General held 76 of the ~110 settings, about **11 screens**. The sidebar is now: - Account; - **Appearance**; - **Messages** (incl. editor, date and time); - Notifications; - **Calls & audio**; - **Privacy & security** (privacy options plus the former Devices page); - **Data & storage** (storage, sync, your data); - **Desktop** (desktop app only); - Emojis & stickers; - **Advanced** (former Developer Tools, plus "show hidden events" and "legacy username colour"); - About. - The longest page is now about **3 screens** (Appearance, 1,962 px; it was 6,957 px). Settings opens on Account. - **Deep links keep working:** "devices" → Privacy & security, the old "general" → Appearance, and the desktop update notice → Desktop. - Text that named old pages is updated: the key-upload banner, Room retention, the close-behaviour prompt and the update notice. - The push-rule editor gets one line explaining the Matrix terms, and the remaining Title Case labels are fixed. **#460, big pickers collapsed.** Chat background, seasonal theme and avatar decoration show the current choice and a **Change** button. The first two close after a pick; decorations keep their Save step. **#461, privacy.** - Both link-preview switches move into Privacy. - The two overlapping receipt switches become one choice: **Everyone / Private read receipts / Hide my activity**. - This maps exactly onto the existing settings, so there's no migration; see the note on #461 for why it's one choice rather than two. **#462, Calls & audio grouped:** Joining · Microphone and noise · Push to talk and hotkeys · Sounds · Quality · Soundboard, the same in every mode. No setting changed. **Also:** the app CSS hides native radio inputs, so the receipt choice and the your-data import choice now use the folds `RadioButton`; the selection was invisible before. **Tested** in the browser on a build of this branch: - the menu shows the new pages and Desktop stays hidden in a browser; - the page heights are as above; - Calls shows all six groups; - each privacy option sets the intended pair of settings (everyone → off/off, private → private only, hidden → both); - link previews are on Privacy and gone from Messages. Playwright, 18/18: security-nudge (deep link to Privacy & security), stale-sessions, your-data (Data & storage), key-upload-recovery, a11y (incl. an axe audit of settings and the updated menu snapshot), and boot. Unit tests: 1,440 pass. Lint is at 29. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared added 3 commits 2026-10-25 12:16:50 -04:00
#459 General held 76 of ~110 settings (11 screens). Its sections now live
on pages named for what people come to do:
  Account, Appearance, Messages (incl. editor, date and time),
  Notifications, Calls & audio, Privacy & security (privacy options +
  the former Devices page), Data & storage (storage, sync, your data),
  Desktop (desktop app only), Emojis & stickers, Advanced (the former
  Developer Tools + "show hidden events" / "legacy username colour"),
  About.
The longest page is now ~3 screens (Appearance). Settings opens on
Account. Deep links keep working: "devices" lands on Privacy & security,
the old "general" on Appearance, the update notice on Desktop. Text that
pointed at the old page names is updated. The push-rule editor gets one
line explaining the Matrix terms. Remaining Title Case labels on Account
and Devices are sentence case.

#460 Chat background, seasonal theme and avatar decoration grids sit
behind one row: the current choice and a Change button (the first two
close after a choice; decorations keep their Save step).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
#461 Both link-preview switches move into Privacy. The two overlapping
receipt switches become one choice that maps exactly onto the existing
settings (no migration, every old combination behaves the same):
Everyone / Private read receipts / Hide my activity (also hides typing
and other people's receipts, as "Hide typing and read receipts" did).

#462 Calls & audio is grouped, the same in every mode: Joining,
Microphone and noise, Push to talk and hotkeys, Sounds, Quality,
Soundboard. No setting changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
fix(settings): visible radio buttons for the privacy and import choices
CI / Build & Quality Checks (push) Skipped
CI / Secret scan (gitleaks) (push) Skipped
CI / Playwright smoke (e2e) (push) Skipped
CI / Build & Quality Checks (pull_request) Successful in 3m22s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 8s
CI / Playwright smoke (e2e) (pull_request) Successful in 19m52s
b93e4bcef9
The app CSS hides native radio inputs, so the read-receipt choice and the
"keep mine / use the file's" import choice showed no selection. Use the
folds RadioButton.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared scheduled this pull request to auto merge when all checks succeed 2026-10-25 12:16:58 -04:00
jared merged commit 3b3bf8abac into lotus 2026-10-25 12:45:41 -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#466