@@ -327,10 +327,24 @@ CoreAudio formats, AppleScript details, or event serialization.
327327 boundaries, steal focus, or block controls in the foreground application.
328328- Every desktop pane renders the shared scaffold from ` desktop_ui ` : the
329329 bounded pane header plus one centered content column at ` PANE_CONTENT_WIDTH ` ,
330- with list+detail panes using the fixed ` PANE_LIST_WIDTH ` list column. Panes
331- must not introduce their own header treatments or content widths, and text
332- columns beside a fixed column carry ` flex_1 ` with a zero min-width so long
333- lines wrap instead of widening the pane.
330+ with list+detail panes using the fixed ` PANE_LIST_WIDTH ` list column (` pane_list_card `
331+ and ` compact_panel ` detail cards with rounded ` list_row ` items). Panes
332+ must not introduce their own header treatments, ad-hoc row helpers, or content
333+ widths, and text columns beside a fixed column carry ` flex_1 ` with a zero
334+ min-width so long lines wrap instead of widening the pane. Any ` .truncate() `
335+ element must also set ` .overflow_x_hidden() ` so GPUI shapes an ellipsis (` … ` )
336+ rather than clipping mid-glyph.
337+ - Desktop UI follows the OpenCode V2 dark surface hierarchy (` SIDEBAR ` recessed
338+ at ` #111111 ` , ` CANVAS ` base at ` #161616 ` , elevated ` SURFACE ` cards at ` #1d1d1d ` ,
339+ and recessed ` CANVAS ` controls with ` LINE ` borders inside cards). Interactive
340+ controls inside ` SURFACE ` cards must use bordered chips (` canvas_button ` ,
341+ ` header_button ` , or ` disclosure_button ` ) rather than borderless ` SURFACE `
342+ buttons, and dropdown/picker triggers must include a visible disclosure
343+ affordance. Keep copy to one direct line per control; never add intro
344+ paragraphs above setting cards, repeated per-row field labels, or redundant
345+ "cannot be undone" warnings beside two-step confirmation buttons. Render
346+ modal/list errors at the top of the scrollable container so they are never
347+ hidden below the fold.
334348- Public app updates are Developer ID signed, notarized, stapled, EdDSA signed,
335349 published artifact-first/feed-last, and installed through Sparkle.
336350- Linux direct-install updates accept only a strictly newer signed stable
0 commit comments