From d050517c4e032deabe14b25d09889f1cdb04238a Mon Sep 17 00:00:00 2001 From: ciregenz Date: Sun, 9 Aug 2026 13:27:26 -0700 Subject: [PATCH] [eric] canvas: fullscreen locks canvas panning (drag joined the wheel gate), thirds cut from the tile menus, Applications window gets always-on search + image-only tiles (screenshot > symbol > svg, letters never) --- .../app/pages/Dashboard/cards/tileZones.ts | 5 ++--- .../Dashboard/desktop/ApplicationsWindow.tsx | 19 +++++++++++++------ .../hooks/interaction/useCanvasControls.ts | 3 +++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/frontend/src/app/pages/Dashboard/cards/tileZones.ts b/frontend/src/app/pages/Dashboard/cards/tileZones.ts index a09979a4..39ab268d 100644 --- a/frontend/src/app/pages/Dashboard/cards/tileZones.ts +++ b/frontend/src/app/pages/Dashboard/cards/tileZones.ts @@ -3,13 +3,12 @@ export const ZONE_LABELS: Record = { fill: 'Fill', left: 'Left half', right: 'Right half', top: 'Top half', bottom: 'Bottom half', tl: 'Top left', tr: 'Top right', bl: 'Bottom left', br: 'Bottom right', - t3l: 'Left third', t3c: 'Center third', t3r: 'Right third', }; // The one grid every tiling surface renders: the green-dot hover menu and the right-click "Tile to -// zone" submenu both map this, so they can never drift apart on which zones exist. +// zone" submenu both map this, so they can never drift apart on which zones exist. Thirds were cut +// (Eric 2026-08-09): the geometry still restores an old t3* card fine, the menus just stop offering it. export const TILE_GROUPS: { label: string; zones: string[] }[] = [ { label: 'Fill and halves', zones: ['fill', 'left', 'right', 'top', 'bottom'] }, { label: 'Quarters', zones: ['tl', 'tr', 'bl', 'br'] }, - { label: 'Thirds', zones: ['t3l', 't3c', 't3r'] }, ]; diff --git a/frontend/src/app/pages/Dashboard/desktop/ApplicationsWindow.tsx b/frontend/src/app/pages/Dashboard/desktop/ApplicationsWindow.tsx index 1d63b931..96404346 100644 --- a/frontend/src/app/pages/Dashboard/desktop/ApplicationsWindow.tsx +++ b/frontend/src/app/pages/Dashboard/desktop/ApplicationsWindow.tsx @@ -19,10 +19,11 @@ function hueFor(name: string): number { return h % 360; } -// Every tile is a generated ICON (gradient + monogram): a screenshot crushed to 68px reads as mud, -// so the screenshot lives in the hover preview instead and the row stays dock-uniform. +// Never letters or numbers on a tile (Eric 2026-08-09): the app's own screenshot is the icon; an +// emoji glyph (a real symbol, not an initial) is the next-best mark; the generic app SVG closes. function AppTile({ output }: { output: Output }): React.ReactElement { const glyph = (output.icon || '').trim(); + const glyphIsSymbol = glyph.length > 0 && glyph.length <= 3 && !/[a-z0-9]/i.test(glyph); const h = hueFor(output.name || '?'); return ( - {glyph && glyph.length <= 3 ? glyph : (output.name || '?').trim().charAt(0).toUpperCase()} + {output.thumbnail ? ( + + ) : glyphIsSymbol ? ( + glyph + ) : ( + + )} ); } @@ -126,7 +133,7 @@ function ApplicationsWindow({ outputs, onOpenApp, onClose }: ApplicationsWindowP )} - {Object.keys(outputs).length > 8 && ( + {Object.keys(outputs).length > 0 && (