Skip to content

Tray: Replace the notch with a controls strip on the dock's edge - #701

Open
mmtr wants to merge 3 commits into
trunkfrom
claude/desktop-ui-top-right-1356d1
Open

Tray: Replace the notch with a controls strip on the dock's edge#701
mmtr wants to merge 3 commits into
trunkfrom
claude/desktop-ui-top-right-1356d1

Conversation

@mmtr

@mmtr mmtr commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Proposed Changes

  • The notch is gone. A tray takes its place: a strip that wraps the bottom dock and extends above it, carrying the site assistant's front door and Exit OpenStation.
  • The assistant gets a visible way in. Core's command-palette button is hijacked to open it, but the admin bar that button lives in is hidden by default, so the only entry point was the keyboard. The tray shows the site mark and the ⌘K / Ctrl+K chord.
  • Exit OpenStation moves off the dock rail into the tray.
  • On a left- or right-placed rail there is no tray, so the same two controls become tiles instead: the assistant leads the rail, the exit closes it as before.
  • SystemDockItem.navKind gains 'core', the only kind that sorts ahead of Dashboard. Additive, so existing values are unaffected.
Unified Split
Screenshot 2026-08-28 at 17 48 16 Screenshot 2026-08-28 at 17 48 39

Why are these changes being made?

The assistant had no visible entry point at all, and the notch it lived on was a second piece of floating chrome on a desktop whose whole point is not having any. Drawn as the dock's own edge, thickened until the controls fit inside it, it belongs to something already on screen.

Exit OpenStation was the other half. On the rail it had to be drawn as an exception to every rule the dock had (its own gap, a ring instead of a plate, a hover that leaned the other way) because the dock is a list of things you open and close and the exit does neither.

Testing Instructions

  1. Open OpenStation with the dock at the bottom. Make sure a strip sits on the dock's top edge, the same width as the dock, holding the site-mark glyph with ⌘K beside it and an exit glyph at the trailing end.
  2. Click the site mark. Make sure the assistant opens. Press ⌘K (Ctrl+K on Windows/Linux) and make sure it opens the same surface.
  3. Click the exit glyph. Make sure you land back in the classic admin, then return to OpenStation.
  4. Hover each control. Make sure a label appears above the strip reading "Open site assistant" and "Exit OpenStation", and that neither is clipped by the strip's rounded corners.
  5. Hover the exit control and look at the strip's trailing corner. Make sure the hover fill follows the rounded corner instead of spilling past it.
  6. Open any wp-admin window and move it so it sits under the strip. Make sure the strip stays dark and its glyphs stay legible against the light window.
  7. Switch to the Legacy desktop theme (OpenStation Preferences > Appearance > Desktop theme). Make sure the strip follows Legacy's dock colours and its glyphs are still legible.
  8. Maximize a window. Make sure it stops below the strip rather than sliding under it.
  9. OpenStation Preferences > Appearance > Desktop layout, move the dock to the left. Make sure the strip is gone, the site assistant is the first item on the rail as a full-width band with its shortcut, and Exit OpenStation is the last tile with its ring.
  10. Click the assistant band on the rail, then the exit tile. Make sure both still do what they say.
  11. Switch to the Split layout. Make sure the sidebar has no assistant band (the tray on the bottom dock carries it) and that its first menu tile is not flush against the top edge.
  12. Move the dock back to the bottom. Make sure the strip returns and the two rail tiles are gone.
  13. Activate or deactivate a plugin that adds an admin menu, so the dock changes width. Make sure the strip stays exactly as wide as the dock and centred on it.
  14. Enter the window overview (double-tap the desktop or the Overview tile). Make sure the strip fades out with the rest of the chrome.
Open WordPress Playground Preview

mmtr and others added 3 commits August 28, 2026 12:18
Retires the notch and adds the tray, a pill of shell chrome carrying
the site assistant's front door and Exit OpenStation.

The assistant had no visible way in. Core's command-palette button is
hijacked to open it, but the admin bar that button lives in is hidden
by default, so the only entry point was the keyboard. The tray gives
it one, with the chord spelled out next to it.

Exit OpenStation moves off the dock. The dock is a list of things you
open and close, and the one control that does neither kept being drawn
as an exception to every rule the rail had: its own gap, a ring
instead of a plate, a hover that leaned the other way. Its tile
factory and that CSS go with it. SystemDockItem.locked stays as a
public flag for plugins, though nothing built-in sets it now.

The tray rests on the bottom dock as a second shelf, and falls back to
floating in the top-right corner when the user puts their rail on a
side edge. It reserves no work area in either placement.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…p-right-1356d1

# Conflicts:
#	assets/css/dock.css
#	assets/css/notch.css
#	docs/javascript-reference.md
#	src/desktop.ts
Reshapes the tray from a floating top-right pill into a strip that
wraps the bottom dock, and gives side-placed rails the same two
controls as tiles instead.

The pill read as a second piece of chrome on a desktop whose point is
not having any. As the dock's own edge, thickened until the controls
fit inside it, it belongs to something already on screen. It claims
the band it covers the way the dock does, by being measured.

There is no tray without a bottom dock. Put the rail on a side edge
and it detaches; the assistant leads the rail and Exit OpenStation
closes it, which is where the exit was before the tray existed. Both
hang off one predicate, `findBottomDock()`, so the two surfaces cannot
both claim the job.

`SystemDockItem.navKind` gains `'core'`, the only kind that sorts
ahead of Dashboard. Additive: existing values are unaffected.

Two bugs found on the way. `desktop-layout.ts` folded every
non-control kind into `'app'`, and `'app'` defaults to the desktop, so
a tile declaring any other kind was routed off the rail it asked for
and never painted with nothing reporting a problem. And the tray read
its surface from the dock's token family but its text from the
palette's, which Legacy sets dark for light surfaces, so the strip
rendered near-black text on dark glass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mmtr mmtr self-assigned this Aug 28, 2026
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.

1 participant