Animate settings section expand and collapse - #227
Conversation
|
Warning Review limit reachedNext included review available in 49 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Stale comment
Security review
Outcome: no medium, high, or critical findings.
Reviewed the single-file change in
packages/web/src/components/SettingsModal.svelte(desktop settings expand/collapse animation).
- No new attacker-controlled inputs or sinks.
section.idis a closedSectionIdunion fromSETTINGS_SECTIONS;getElementById/scrollIntoVieware not injection sinks here.transition:slideandprefersReducedMotionare first-party Svelte APIs already used elsewhere in the app. Duration is a bounded constant (0or200).- No dependency, authn/authz, secret-handling, or serialization changes.
Prior automation review threads: none. Slack summary skipped (no Slack destination configured for this run).
Sent by Cursor Automation: Find vulnerabilities
There was a problem hiding this comment.
🟢 Approval recommended
The change is localized to the Settings modal UI, follows existing transition patterns, and includes reduced-motion handling without altering the mobile flow.
Pull request overview
This PR smooths the desktop Settings modal UX by animating section expand/collapse instead of instantly showing/hiding the expanded panel, aligning the interaction with existing slide transitions used elsewhere in the app.
Changes:
- Add
transition:slide(200ms) to the desktop expanded settings panel. - Respect OS “reduced motion” by setting transition duration to
0viaprefersReducedMotion. - Move the post-expand
scrollIntoViewbehavior tointroendso scrolling occurs after the panel reaches its final height.
File summaries
| File | Description |
|---|---|
| packages/web/src/components/SettingsModal.svelte | Adds a slide transition for desktop-expanded settings sections, with reduced-motion handling and scroll timing moved to the transition’s completion. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Slide the expanded settings panel open and closed (200ms, matching the collection tile transition) instead of mounting it abruptly. Duration is 0 under prefers-reduced-motion. Scroll-into-view now runs on introend so it targets the panel's final height.
9636df2 to
7b753a5
Compare
There was a problem hiding this comment.
Security review
Outcome: no medium, high, or critical findings.
Re-reviewed the single-file change in packages/web/src/components/SettingsModal.svelte (desktop settings expand/collapse animation) on 7b753a5.
- No new attacker-controlled inputs or sinks.
section.idis a closedSectionIdunion fromSETTINGS_SECTIONS;getElementById/scrollIntoVieware not injection sinks here. transition:slideandprefersReducedMotionare first-party Svelte APIs already used elsewhere in the app. Duration is a bounded constant (0or200).- No dependency, authn/authz, secret-handling, or serialization changes.
Prior automation review threads: none (previous run also reported no findings; no inline threads to re-validate). Slack summary skipped (no Slack destination configured for this run).
Sent by Cursor Automation: Find vulnerabilities


Expanding or collapsing a section in the Settings modal was jarring — the panel appeared and vanished instantly. It now slides.
Changes
packages/web/src/components/SettingsModal.svelteonly:.expandedpanel usestransition:slideat 200ms — the same transition and durationCollectionTodoTilealready uses, so it matches the rest of the app. Covers expanding, collapsing (✕ or Escape), and switching directly between sections (old panel collapses while the new one opens).prefersReducedMotionfromsvelte/motion.onintroend, so it targets the panel's final height rather than a half-open one. Svelte still firesintroendat zero duration, so reduced-motion users are still scrolled to the section.Verification
svelte-check: 0 errors.biome cion the file matches master exactly (4 pre-existing CSS specificity warnings, nothing new).Mobile is untouched: that flow swaps the whole tile grid for a detail page rather than expanding in place, so a slide doesn't apply there.