Skip to content

web-ui: restructure Home + Settings onto the Oatmeal composition (#290) - #318

Open
bogdanpydev wants to merge 1 commit into
mainfrom
frontend/290-oatmeal-home-settings
Open

web-ui: restructure Home + Settings onto the Oatmeal composition (#290)#318
bogdanpydev wants to merge 1 commit into
mainfrom
frontend/290-oatmeal-home-settings

Conversation

@bogdanpydev

Copy link
Copy Markdown
Collaborator

Summary

Brings the signed-in Home and Settings surfaces onto the Oatmeal composition, finishing the rollout #261 deferred (which delivered the shared Heading/Button idioms and applied them to chrome + auth). Two signature moves, applied uniformly:

  • Serif font-display section headings — every section title moves from the tiny uppercase-muted <h2> label (text-xs … uppercase … text-muted-foreground) to the shared components/ui/Heading.vue (Instrument Serif). Top-level titles use :level="2"; the app-detail page's per-app sub-sections (Outgoing email / Setup secrets / Settings) use :level="3"; the app-detail page title moves off its bespoke <h1> onto <Heading :level="2">.
  • Olive-50 card panels with cloud spacing — panels were already bg-card (olive-50); they move from the compact rounded-xl … px-4 py-3 to the calmer rounded-2xl … p-5 (the auth cards' radius + generous padding). Applied across every card/row/table container and the Settings desktop nav panel.

Activity — the one section with no in-page heading — gains a serif "Activity" title on its header row.

This is a pure composition pass: no behavior, data flow, routing, or IA change; no literal bg-olive-* and no raw hex introduced (colors keep flowing from the semantic tokens).

Scope

Touched: web-ui/src/views/HomeView.vue and every web-ui/src/views/settings/* section. Docs: a progress entry (docs/progress/oatmeal-home-settings-composition.md) + index row.

Two judgement calls (worth an eyeball)

  1. Home launcher grids are left open, not wrapped in a card panel. The app tiles' logo squares are already bg-card (olive-50), so nesting them inside an olive-50 panel washes out their contrast, and boxing the apps fights DASHBOARD.md's calm-launcher north star. On the launcher the tiles are the cards; the composition change for Home is the serif headings + tiles-as-cards, while Settings carries the explicit card-panel composition.
  2. The pill Button/input element-idiom is deferred. web-ui: restructure Home + Settings to the Oatmeal composition #290's "Do" list scopes to card-panel composition + font-display headings + structural utilities; the pill button is coupled to a pill-input idiom (there's no shared Input component yet) that's out of that scope. Converting only buttons would leave pill buttons beside square inputs in every form — a worse half-conversion. Left as a documented follow-up (see the progress entry's Known gaps).

No spec change

WEB_UI.md # Styling already owns the Oatmeal theme this realizes; DASHBOARD.md/SETTINGS.md describe IA/behavior (unchanged) and pin no heading style — matching #261's "no visual-language rule changed" precedent.

Verification

make check-web (typecheck + production build) — green. A live full-stack visual pass wasn't run in the dev environment (the signed-in surfaces sit behind the authenticated SPA and no headless-browser lib is available); the change is presentational and built on the already-proven Heading idiom + semantic tokens.

Closes #290

Bring the signed-in Home and Settings surfaces onto the theme's composition,
finishing the rollout #261 deferred. Two signature moves applied uniformly:
section titles move from the tiny uppercase-muted <h2> labels to the shared
Instrument Serif <Heading> display idiom, and every olive-50 (bg-card) panel
moves from the compact rounded-xl px-4 py-3 to the calmer rounded-2xl p-5
(the auth cards' radius + cloud spacing). Activity, the one section without an
in-page heading, gains a serif "Activity" title.

Pure composition pass: no behavior, IA, or routing change; no literal
bg-olive-*, no raw hex. Home launcher grids stay open (the tiles are already
olive-50 cards); the pill Button/input element-idiom is deferred as a
follow-up. make check-web green.

Closes #290
@bogdanpydev bogdanpydev self-assigned this Jul 9, 2026
@bogdanpydev
bogdanpydev requested a review from onel July 9, 2026 09:43
@bogdanpydev bogdanpydev changed the title Hosted: restructure Home + Settings onto the Oatmeal composition (#290) web-ui: restructure Home + Settings onto the Oatmeal composition (#290) Jul 9, 2026
@greptile-apps

greptile-apps Bot commented Jul 9, 2026

Copy link
Copy Markdown

Confidence Score: 4/5

The changed UI is close to mergeable after fixing the app detail heading level.

  • The new Heading imports and numeric level bindings match existing project usage.
  • The app detail route can lose its top-level heading.
  • The Account card can overflow on narrow screens with long usernames.

web-ui/src/views/settings/InstalledAppDetailSection.vue; web-ui/src/views/settings/AccountSection.vue

Important Files Changed

Filename Overview
web-ui/src/views/HomeView.vue Replaces Home section labels with shared display headings and updates health issue card spacing.
web-ui/src/views/settings/InstalledAppDetailSection.vue Moves the app detail title and subsections onto shared headings, but changes the app detail page title from an h1 to an h2.
web-ui/src/views/settings/ActivitySection.vue Adds an Activity heading and updates the audit table container radius.
web-ui/src/views/settings/UsersSection.vue Updates the Add user and People headings plus user form and row card spacing.
web-ui/src/views/settings/OutgoingEmailSection.vue Updates outgoing email headings and provider form/list card spacing.
web-ui/src/views/settings/AccountSection.vue Updates the Account heading and card spacing, with a narrow-screen overflow risk for long account names.
web-ui/src/views/settings/NotificationsSection.vue Updates the Notifications heading and notification row card spacing.
web-ui/src/views/settings/InstalledAppsSection.vue Updates the Installed apps heading and app row card spacing.
web-ui/src/views/settings/AboutSection.vue Updates the About heading and card spacing.
web-ui/src/views/settings/SettingsLayout.vue Updates the desktop settings navigation panel radius.
docs/progress/oatmeal-home-settings-composition.md Adds progress documentation for the Oatmeal Home and Settings composition rollout.
docs/progress/README.md Adds the new Oatmeal Home and Settings progress entry to the index.

Reviews (1): Last reviewed commit: "feat(web-ui): restructure Home + Setting..." | Re-trigger Greptile


<div class="min-w-0 flex-1">
<h1 class="text-xl font-semibold">{{ app.name }}</h1>
<Heading :level="2">{{ app.name }}</Heading>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 App Detail Has No H1

Changing the app name from the old h1 to Heading with level="2" means /settings/apps/:id no longer renders a page-level h1; the signed-in settings shell does not add one above it. Screen-reader heading navigation and accessibility checks that expect each routed page to expose a top-level heading can now miss the installed app detail title.

Suggested change
<Heading :level="2">{{ app.name }}</Heading>
<Heading :level="1">{{ app.name }}</Heading>

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

<h2 class="text-xs font-medium uppercase tracking-wide text-muted-foreground">Account</h2>
<div class="space-y-3 rounded-xl border border-border bg-card px-4 py-3">
<section class="space-y-4">
<Heading :level="2">Account</Heading>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Long Account Row Overflows

The wider p-5 card leaves less space for the non-wrapping account row below it. On a narrow phone, a long username plus the fixed Change password button can overflow the card because that row uses flex items-center justify-between without wrapping or truncation, leaving the password action outside the visible panel.

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.

web-ui: restructure Home + Settings to the Oatmeal composition

1 participant