Skip to content

Improve responsive UI shell behavior - #1024

Open
sametcn99 wants to merge 2 commits into
gotify:masterfrom
sametcn99:feature/improve-responsive-ui-shell
Open

Improve responsive UI shell behavior#1024
sametcn99 wants to merge 2 commits into
gotify:masterfrom
sametcn99:feature/improve-responsive-ui-shell

Conversation

@sametcn99

Copy link
Copy Markdown

Summary

Improve the UI shell so navigation, connection errors, and scroll controls behave predictably across desktop, tablet, and mobile viewports.

The previous responsive layout allowed the permanent drawer to overlap main content at tablet widths, the temporary drawer required a dedicated close button, long connection errors could disturb header/content placement, and the scroll-to-top button could remain visible after returning to the top of the page.

Changes

Responsive navigation layout

  • Keep the permanent navigation drawer fixed and give its list an independent scroll area.
  • Reserve the drawer's 250px width for the main content at sm and larger breakpoints, preventing navigation from overlaying the page at tablet and desktop widths.
  • Keep the full-width main-content layout on mobile, where the temporary drawer is used instead.
  • Move primary route actions and account actions into the mobile drawer so the header stays compact at small widths.
  • Add accessible labels and tooltips to compact header controls.

Mobile drawer interactions

  • Remove the dedicated close icon from the temporary drawer.
  • Close the drawer when users tap the backdrop, press Escape, press the menu button again, navigate to a route, open settings, sign out, or enable browser notifications.
  • Maintain drawer list scrolling without moving the surrounding page.

Connection error layout

  • Make the connection-error banner wrap safely on narrow screens.
  • Apply banner-aware offsets to the header, drawer, and main content so a failed backend connection does not overlap or shift the shell inconsistently.

Scroll-to-top behavior

  • Recalculate scroll-button visibility from the current window scroll position on mount and every scroll event.
  • Ensure the button becomes hidden again after the user returns above the visibility threshold.

TypeScript configuration

  • Include the Vite environment declaration in the TypeScript project so Vite runtime typings are available during builds.

Validation

  • yarn --cwd ui lint
  • yarn --cwd ui build

Both commands complete successfully. The production build still reports the existing MUI barrel-module and bundle-size warnings.

@sametcn99
sametcn99 requested a review from a team as a code owner August 8, 2026 11:34
@codecov

codecov Bot commented Aug 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.53%. Comparing base (c27a381) to head (f0c163b).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1024   +/-   ##
=======================================
  Coverage   74.53%   74.53%           
=======================================
  Files          66       66           
  Lines        3483     3483           
=======================================
  Hits         2596     2596           
  Misses        688      688           
  Partials      199      199           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant