diff --git a/apps/desktop/electron/main/plugin-launcher-state.ts b/apps/desktop/electron/main/plugin-launcher-state.ts index 336b1b6fb2..85e09ca51b 100644 --- a/apps/desktop/electron/main/plugin-launcher-state.ts +++ b/apps/desktop/electron/main/plugin-launcher-state.ts @@ -15,11 +15,12 @@ import { join } from "node:path"; export const PLUGIN_LAUNCHER_STATE_FILE = "plugin-launcher-state.json"; /** - * The launcher must fit eight columns without squeezing: below this width the - * grid drops to six columns, which is the one thing the user cannot undo by - * dragging. + * The launcher opens wide enough for a 48px icon and a readable name in every + * one of its eight columns. Below this floor a tile is about 90px wide and the + * longest names start losing characters, so the window refuses to go narrower + * rather than let the grid squeeze. */ -export const PLUGIN_LAUNCHER_MIN_WIDTH = 560; +export const PLUGIN_LAUNCHER_MIN_WIDTH = 800; /** * Height is not a user preference any more: the renderer measures what it * renders and asks for exactly that height through @@ -30,7 +31,7 @@ export const PLUGIN_LAUNCHER_MIN_CONTENT_HEIGHT = 120; /** Wider than this the eight tiles stop being scannable. */ export const PLUGIN_LAUNCHER_MAX_WIDTH = 1280; export const PLUGIN_LAUNCHER_MAX_HEIGHT = 940; -export const PLUGIN_LAUNCHER_DEFAULT_WIDTH = 760; +export const PLUGIN_LAUNCHER_DEFAULT_WIDTH = 900; /** Initial height before the panel has measured itself. */ export const PLUGIN_LAUNCHER_DEFAULT_HEIGHT = 440; diff --git a/apps/desktop/src/components/launcher/LauncherTileButton.tsx b/apps/desktop/src/components/launcher/LauncherTileButton.tsx index 2afaa2d23c..f7f33d0cf5 100644 --- a/apps/desktop/src/components/launcher/LauncherTileButton.tsx +++ b/apps/desktop/src/components/launcher/LauncherTileButton.tsx @@ -4,13 +4,13 @@ import type { LauncherTile } from "../../lib/launcher-search"; import { IconPin } from "../icons"; /** - * One grid cell: icon, type badge, and name — plus its own pin toggle. + * One grid cell: a rounded-square icon and the name, plus its own pin toggle. * - * Every cell has the same three parts so the eight-column grid stays aligned: - * the icon shape (square plugin, round application) and the small type badge - * carry the source, and the name replaces the old second text line, which used - * to explain why the item matched. A long name is ellipsized instead of - * wrapping, which would break the row rhythm. + * Every source renders the same shape at the same size, so the grid reads as + * one set of tools and the whole line below the icon belongs to the name. The + * source still appears in the hover title for anyone who needs it, but it no + * longer costs a corner of the icon or a word of the name. A long name is + * ellipsized instead of wrapping, which would break the row rhythm. * * The pin sits in the corner and is only visible while the cell is hovered, * active or focused; an already pinned cell keeps it visible and filled. @@ -71,10 +71,7 @@ export function LauncherTileButton({ title={title} onClick={onOpen} > - + {showIcon ? ( {tile.monogram} )} - - {tile.name} - {typeLabel} - + {tile.name}