Add dark mode theming, dialog dropdown clipping, and user menu scale
fix entries to changelog. Add extreme UI scale polish to backlog.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Menu primitive uses position:fixed inside a CSS-transformed container
(#surfaceInner scale). getBoundingClientRect() returns scaled coords
but fixed positioning uses the transform container's coordinate space.
Divide anchor rect and viewport dimensions by sw.shell.getScale() to
convert to the correct coordinate space. Menu now positions and clamps
correctly at any UI scale setting.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Broaden the dialog overflow:visible override to target any
sw-dialog containing a sw-user-picker, not just .chat-new.
Fixes the Add Participant modal clipping search results.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace non-existent CSS variable names (--text-primary, --text-muted,
--bg-active, --primary) with actual theme tokens from variables.css
(--text, --text-2, --text-3, --accent, --accent-dim, --input-bg,
--bg-raised, --bg-surface). Fixes invisible text and wrong backgrounds
in dark mode.
Allow UserPicker dropdown to overflow dialog body via :has() selector
override on sw-dialog__body overflow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Chat surface package (packages/chat/) with conversation list, message
thread, compose bar, participant sidebar, create conversation dialog,
typing indicators, read receipts, message editing, and message deletion.
Built on chat-core library with realtime event subscriptions.
Fix stale token login deadlock: REST client auth endpoints excluded
from 401 retry loop, 8s defensive boot timeout on auth.boot().
Fix bundled package permissions: auto-grant with NULL granted_by and
set status active on install.
Switch docker-compose to named volume for remote Docker host compat.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>