Skip to content

feat: improve UI and fix responsive layout - #412

Open
viviyan-prince wants to merge 2 commits into
Abhash-Chakraborty:canaryfrom
viviyan-prince:canary
Open

feat: improve UI and fix responsive layout#412
viviyan-prince wants to merge 2 commits into
Abhash-Chakraborty:canaryfrom
viviyan-prince:canary

Conversation

@viviyan-prince

@viviyan-prince viviyan-prince commented Aug 2, 2026

Copy link
Copy Markdown

Summary

Improved the Settings page UI/UX by enhancing layout consistency, responsiveness, and accessibility while preserving all existing functionality.

Fixes #358

Type of change

  • Bug fix
  • Feature
  • Documentation update
  • Refactor
  • CI / tooling

Release impact

  • No user-visible release note needed
  • Patch (backward-compatible fix)
  • Minor (backward-compatible feature)
  • Major (breaking change)
  • Critical/security fix (keep sensitive details private)

What changed

  • Improved spacing and layout consistency across the Settings page.
  • Enhanced mobile responsiveness for a better user experience.
  • Improved accessibility with better keyboard navigation and focus states.
  • Refined hover, loading, and disabled states for interactive components.
  • Maintained full support for both light and dark themes.
  • No backend, API, database, routing, or business logic changes.

How to test

  1. Run npm install
  2. Run npm run dev
  3. Open the Settings page and verify the UI improvements.
  4. Run the following checks:
    biome check
    tsc --noEmit
    npm test
    npm run build

Checklist

  • I linked the related issue
  • I ran required checks from CONTRIBUTING.md
  • I updated docs/env notes if needed
  • My PR is scoped to a single issue
  • I followed commit message conventions
  • I am not committing secrets or local artifacts
  • This PR targets canary unless it is the maintainer promotion PR

GSSoC'26 checklist

  • I requested issue assignment before starting
  • I have meaningful commits (no spam commits)
  • I am ready to explain my implementation in review comments

Summary by CodeRabbit

  • Style

    • Refined the settings page layout, spacing, responsive behavior, and control sizing.
    • Added clearer hover, active, focus, and disabled-state feedback across settings controls.
    • Improved toggle and button animations, including loading indicators and larger touch targets.
  • Accessibility

    • Added clearer live status announcements for copying and hardware detection.
    • Improved focus visibility, semantic labeling, busy-state indicators, and screen-reader behavior.
  • Bug Fixes

    • Prevented the support-summary copy action from being triggered repeatedly while processing.

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

PR Context Summary

  • Linked issue(s): feat: UI/UX Enhancements for Improved User Experience #358
  • Referenced but not closing: none
  • PR author trusted by GitHub: no
  • Dependabot PR: no
  • PR assignee synced from linked issue: no change
  • Macroscope review status: Waiting for under-review or ready-to-merge before triggering Macroscope.

Suggested issue links

  • No strong issue match found yet.

Use Fixes #123 or Closes #123 in the PR body when one of the suggestions is the intended issue.
Manual rerun: Actions > PR Context Triage > Run workflow > set pr_number and force_review=true.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@viviyan-prince, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 42 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 279172a0-a41d-4d91-86e1-8ea29ec472c4

📥 Commits

Reviewing files that changed from the base of the PR and between 530b0e5 and d10b967.

📒 Files selected for processing (1)
  • frontend/src/app/settings/page.tsx
📝 Walkthrough

Walkthrough

The settings interface now has responsive spacing, larger touch targets, clearer interactive states, and additional accessibility attributes. The About section also provides loading feedback while copying the support summary.

Changes

Settings UI refinements

Layer / File(s) Summary
Settings page layout
frontend/src/app/settings/page.tsx
Responsive spacing, description width, navigation sizing, and retry-button states were updated.
Support summary copy feedback
frontend/src/components/about-settings.tsx
Copying now disables repeated clicks, shows a loader, exposes busy state, and announces progress.
Interactive settings controls
frontend/src/components/ai-runtime-settings.tsx, frontend/src/components/appearance-settings.tsx, frontend/src/components/hardware-accel-settings.tsx, frontend/src/components/map-privacy-settings.tsx
Runtime, appearance, hardware acceleration, and map privacy controls now include improved hover, active, focus, pending, and status behavior.
Trash retention controls
frontend/src/components/trash-retention-settings.tsx
Retention controls now have larger targets, focus feedback, disabled-state styling, semantic icon handling, and an accessible custom input label.

Estimated code review effort: 2 (Simple) | ~15 minutes

Possibly related PRs

Suggested reviewers: abhash-chakraborty

Poem

A rabbit taps the settings pane,
With softer spacing after rain.
A spinner hops when copying starts,
Focus rings brighten interface hearts.
The controls stretch, respond, and glow—
“A tidy burrow!” says the doe.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the primary UI and responsive layout improvements in the pull request.
Description check ✅ Passed The description covers the change, issue, scope, testing, and checklists, but it omits the required screenshots or recordings for UI changes.
Linked Issues check ✅ Passed The changes address issue #358 through responsive layout, UI consistency, accessibility, and improved interactive states without backend or workflow changes.
Out of Scope Changes check ✅ Passed All modified files contain Settings page UI, accessibility, responsiveness, or interaction-state changes that match issue #358.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@macroscopeapp

macroscopeapp Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Unable to check for correctness in d10b967. The changes are low-risk UI styling and accessibility improvements, but the author does not own any of the 7 modified files (all owned by Abhash-Chakraborty). The designated code owner should review these changes per the CODEOWNERS policy.

You can customize Macroscope's approvability policy. Learn more.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@frontend/src/app/settings/page.tsx`:
- Line 153: Update the retry button that calls settingsQuery.refetch() to set
disabled and aria-busy from settingsQuery.isFetching, preserving the existing
styling while preventing repeated requests and exposing the fetch state.

In `@frontend/src/components/trash-retention-settings.tsx`:
- Around line 38-42: Update the hint around the button in the trash-retention
settings component so it is not a focusable no-op: either render the explanation
as accessible passive text without a button, or implement an actual disclosure
with activation behavior plus matching aria-expanded and aria-controls
attributes. Preserve the existing hint content and styling where applicable.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3199abea-05ad-47be-9bc3-e988e32d5f87

📥 Commits

Reviewing files that changed from the base of the PR and between ea1ca1b and 530b0e5.

📒 Files selected for processing (7)
  • frontend/src/app/settings/page.tsx
  • frontend/src/components/about-settings.tsx
  • frontend/src/components/ai-runtime-settings.tsx
  • frontend/src/components/appearance-settings.tsx
  • frontend/src/components/hardware-accel-settings.tsx
  • frontend/src/components/map-privacy-settings.tsx
  • frontend/src/components/trash-retention-settings.tsx

Comment thread frontend/src/app/settings/page.tsx
Comment on lines 38 to +42
<button
type="button"
title="Expired items are permanently removed when Trash is opened. Set Never to require manual emptying."
aria-label="Expired items are permanently removed when Trash is opened. Set Never to require manual emptying."
className="rounded text-[color:var(--muted)] outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--blue)]"
className="inline-flex size-11 items-center justify-center rounded-lg text-[color:var(--muted)] outline-none transition hover:bg-[color:var(--surface-hover)] hover:text-[color:var(--near-white)] active:scale-[0.98] focus-visible:ring-2 focus-visible:ring-[color:var(--blue)]"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Replace the no-op information button with an actual disclosure.

Lines 38-42 render a <button> without onClick, popovertarget, or an associated disclosure. Keyboard users can focus and activate it, but activation does nothing. If the hint is passive, render the explanation as accessible text without a button. If it is interactive, add a disclosure with aria-expanded and aria-controls.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/src/components/trash-retention-settings.tsx` around lines 38 - 42,
Update the hint around the button in the trash-retention settings component so
it is not a focusable no-op: either render the explanation as accessible passive
text without a button, or implement an actual disclosure with activation
behavior plus matching aria-expanded and aria-controls attributes. Preserve the
existing hint content and styling where applicable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: UI/UX Enhancements for Improved User Experience

1 participant