- Position the toast wrapper at y:46 so toasts clear the 38px NsBar (they were
overlapping it; caelestia's Content negates the wrapper top margin, so the
offset must be on the wrapper's y, not its margin).
- Fully collapse the notifsBg blob (visible:false + implicitWidth/Height 0) —
opacity/visible alone don't hide a BlobGroup member, which left a rounded
corner peeking under the square card.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The volume/brightness OSD popped out as a rounded caelestia blob in the dynamic
surface colour. Square it + match the design glass:
- osd/Content: draw a flat square Theme.panelBg + 1px border background.
- ContentWindow: osdBg blob deformAmount 0 + radius 0 + opacity 0 (hidden;
the OSD now owns its background).
- FilledSlider: track + handle radius -> 0 (Tokens.rounding.full ignored
rounding.scale, so it stayed round).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Convert the bar from a vertical left-edge strip to a horizontal top bar. The
shell had no orientation abstraction, so this flips the geometry across the bar
and the drawer/region/interaction layer:
- Bar.qml: ColumnLayout -> RowLayout; hit-testing (checkPopout/handleWheel),
scroll halves and popout-center anchoring all keyed off x instead of y;
first/last padding -> left/right margins.
- BarWrapper.qml: the bar's "thickness" is now its height (clampedHeight/
contentHeight/implicitHeight); content anchors left/right/top.
- drawers: Exclusions (exclusive zone moved left->top), Panels (content inset
topMargin = bar height), Regions + ContentWindow (panel->window coordinate
mapping and the thick border flip left->top), Interactions (bar-region check
y<barHeight, panel Y-origin uses bar height, scroll passes x, bar drag-reveal
is vertical).
- widgets: Clock (Row, HH:MM with a colon), StatusIcons (Row), Workspaces +
Workspace (Row), Tray (Row, expand chevron at the right) — each sizes to the
bar height instead of width.
Verified live in the dev VM: top bar renders with centered-clock entries, the
exclusion zone keeps windows below the bar, and the dashboard drops down
correctly. Popout fly-outs still anchor sideways (Phase B).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>