[{"data":1,"prerenderedAt":2935},["ShallowReactive",2],{"cycle-doc-design-c130-research\u002Fgpui-kit.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":25},{"id":5,"title":6},"c130","Native App (program)",{"id":8,"label":9},"design","Design","research\u002Fgpui-kit.md","GPUI Kit",[13,14,15,16,17,18,19,20,21,22,23,24],"Identity","The layers","Components our pages need","Theming","The app skeleton","Headless UI tests","AccessKit","wasm builds","Version churn","Platform notes and gaps","Open questions","Sources",{"type":26,"children":27},"root",[28,59,65,181,186,203,415,440,577,582,930,941,946,951,1455,1460,1713,1718,1731,1769,1820,1825,1850,1858,2055,2060,2065,2119,2124,2229,2234,2293,2623,2648,2669,2674,2781,2786,2825,2830,2930],{"type":29,"tag":30,"props":31,"children":32},"element","p",{},[33,40,42,49,51,57],{"type":29,"tag":34,"props":35,"children":36},"strong",{},[37],{"type":38,"value":39},"text","Use this file to",{"type":38,"value":41}," choose the kit layer for each piece of the app, read the theme model before c132 builds the token bridge, see how a kit app starts and how its headless tests look, and know what breaks between the weekly releases. Facts come from gpui-kit.com, the repo and crates.io; every source was read on 2026-11-09. Companion: ",{"type":29,"tag":43,"props":44,"children":46},"a",{"href":45},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fgpui",[47],{"type":38,"value":48},"gpui.md",{"type":38,"value":50}," for the engine, ",{"type":29,"tag":43,"props":52,"children":54},{"href":53},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fplatform",[55],{"type":38,"value":56},"platform.md",{"type":38,"value":58}," for what the kit leaves to us.",{"type":29,"tag":60,"props":61,"children":63},"h2",{"id":62},"identity",[64],{"type":38,"value":13},{"type":29,"tag":66,"props":67,"children":68},"ul",{},[69,90,117,148,159,170],{"type":29,"tag":70,"props":71,"children":72},"li",{},[73,75,82,84],{"type":38,"value":74},"\"A production-ready Rust UI framework with 75+ components and primitives, WebAssembly, accessibility, UI integration testing, data tables, docking, charts, code editing, and JavaScript extensions.\" By Longbridge; author Jason Lee (huacnlee), with 115 PRs merged into Zed itself. — ",{"type":29,"tag":43,"props":76,"children":80},{"href":77,"rel":78},"https:\u002F\u002Fgpui-kit.com",[79],"nofollow",[81],{"type":38,"value":77},{"type":38,"value":83},", ",{"type":29,"tag":43,"props":85,"children":88},{"href":86,"rel":87},"https:\u002F\u002Fzed.dev\u002Fblog\u002Fcommunity-champion-jason-lee",[79],[89],{"type":38,"value":86},{"type":29,"tag":70,"props":91,"children":92},{},[93,95,102,104,109,111],{"type":38,"value":94},"The repo began as ",{"type":29,"tag":96,"props":97,"children":99},"code",{"className":98},[],[100],{"type":38,"value":101},"gpui-component",{"type":38,"value":103}," on 2024-06-13 and became ",{"type":29,"tag":34,"props":105,"children":106},{},[107],{"type":38,"value":108},"GPUI Kit with v0.6.0 on 2026-09-03",{"type":38,"value":110},": \"GPUI Component remains the styled component layer within the toolkit.\" — ",{"type":29,"tag":43,"props":112,"children":115},{"href":113,"rel":114},"https:\u002F\u002Fapi.github.com\u002Frepos\u002Flongbridge\u002Fgpui-kit\u002Freleases\u002Ftags\u002Fv0.6.0",[79],[116],{"type":38,"value":113},{"type":29,"tag":70,"props":118,"children":119},{},[120,125,127,133,135,141,142],{"type":29,"tag":34,"props":121,"children":122},{},[123],{"type":38,"value":124},"Current version 0.9.1, published 2026-11-09",{"type":38,"value":126},", \"a backward-compatible patch release\". Cadence since September 2026: one release a week, a minor about every three weeks, in step with the weekly ",{"type":29,"tag":96,"props":128,"children":130},{"className":129},[],[131],{"type":38,"value":132},"gpui-pre",{"type":38,"value":134}," snapshot of Zed. — ",{"type":29,"tag":43,"props":136,"children":139},{"href":137,"rel":138},"https:\u002F\u002Fgpui-kit.com\u002Freleases",[79],[140],{"type":38,"value":137},{"type":38,"value":83},{"type":29,"tag":43,"props":143,"children":146},{"href":144,"rel":145},"https:\u002F\u002Fcrates.io\u002Fapi\u002Fv1\u002Fcrates\u002Fgpui-kit",[79],[147],{"type":38,"value":144},{"type":29,"tag":70,"props":149,"children":150},{},[151,153],{"type":38,"value":152},"Licence Apache-2.0; docs also CC BY 4.0. 20,096 stars, 233 contributors. — ",{"type":29,"tag":43,"props":154,"children":157},{"href":155,"rel":156},"https:\u002F\u002Fgithub.com\u002Flongbridge\u002Fgpui-kit",[79],[158],{"type":38,"value":155},{"type":29,"tag":70,"props":160,"children":161},{},[162,164],{"type":38,"value":163},"Production use: Longbridge Pro, a trading desktop \"shipped on all three platforms\", replaced an Electron client. Fifteen other apps are listed (Zedis, tty7, BarSQL, SwitchHosts Lite, GeeTree…). — ",{"type":29,"tag":43,"props":165,"children":168},{"href":166,"rel":167},"https:\u002F\u002Fgpui-kit.com\u002Fapps",[79],[169],{"type":38,"value":166},{"type":29,"tag":70,"props":171,"children":172},{},[173,175],{"type":38,"value":174},"Platforms: macOS, Windows, Linux \"Stable: Used by production desktop applications\"; wasm \"Showcase only\"; mobile experimental. — ",{"type":29,"tag":43,"props":176,"children":179},{"href":177,"rel":178},"https:\u002F\u002Fgpui-kit.com\u002Fdocs",[79],[180],{"type":38,"value":177},{"type":29,"tag":60,"props":182,"children":184},{"id":183},"the-layers",[185],{"type":38,"value":14},{"type":29,"tag":30,"props":187,"children":188},{},[189,191,196,197],{"type":38,"value":190},"The site says three Kit layers; its own docs page lists five, counting the engine and the facade. — ",{"type":29,"tag":43,"props":192,"children":194},{"href":177,"rel":193},[79],[195],{"type":38,"value":177},{"type":38,"value":83},{"type":29,"tag":43,"props":198,"children":201},{"href":199,"rel":200},"https:\u002F\u002Fgpui-kit.com\u002Fbase",[79],[202],{"type":38,"value":199},{"type":29,"tag":204,"props":205,"children":206},"table",{},[207,231],{"type":29,"tag":208,"props":209,"children":210},"thead",{},[211],{"type":29,"tag":212,"props":213,"children":214},"tr",{},[215,221,226],{"type":29,"tag":216,"props":217,"children":218},"th",{},[219],{"type":38,"value":220},"Crate",{"type":29,"tag":216,"props":222,"children":223},{},[224],{"type":38,"value":225},"What it is",{"type":29,"tag":216,"props":227,"children":228},{},[229],{"type":38,"value":230},"Use it when",{"type":29,"tag":232,"props":233,"children":234},"tbody",{},[235,272,330,360,393],{"type":29,"tag":212,"props":236,"children":237},{},[238,257,267],{"type":29,"tag":239,"props":240,"children":241},"td",{},[242,248,250,255],{"type":29,"tag":96,"props":243,"children":245},{"className":244},[],[246],{"type":38,"value":247},"gpui",{"type":38,"value":249}," (via ",{"type":29,"tag":96,"props":251,"children":253},{"className":252},[],[254],{"type":38,"value":132},{"type":38,"value":256},")",{"type":29,"tag":239,"props":258,"children":259},{},[260,262,266],{"type":38,"value":261},"The engine (",{"type":29,"tag":43,"props":263,"children":264},{"href":45},[265],{"type":38,"value":48},{"type":38,"value":256},{"type":29,"tag":239,"props":268,"children":269},{},[270],{"type":38,"value":271},"Always, through the facade",{"type":29,"tag":212,"props":273,"children":274},{},[275,284,325],{"type":29,"tag":239,"props":276,"children":277},{},[278],{"type":29,"tag":96,"props":279,"children":281},{"className":280},[],[282],{"type":38,"value":283},"gpui-kit",{"type":29,"tag":239,"props":285,"children":286},{},[287,289,295,296,302,303,309,310,316,317,323],{"type":38,"value":288},"The facade: re-exports GPUI and \"brings together Base, Component, and default assets through one dependency\". Paths ",{"type":29,"tag":96,"props":290,"children":292},{"className":291},[],[293],{"type":38,"value":294},"gpui_kit::*",{"type":38,"value":83},{"type":29,"tag":96,"props":297,"children":299},{"className":298},[],[300],{"type":38,"value":301},"::base",{"type":38,"value":83},{"type":29,"tag":96,"props":304,"children":306},{"className":305},[],[307],{"type":38,"value":308},"::component",{"type":38,"value":83},{"type":29,"tag":96,"props":311,"children":313},{"className":312},[],[314],{"type":38,"value":315},"::assets",{"type":38,"value":83},{"type":29,"tag":96,"props":318,"children":320},{"className":319},[],[321],{"type":38,"value":322},"::platform",{"type":38,"value":324},".",{"type":29,"tag":239,"props":326,"children":327},{},[328],{"type":38,"value":329},"Always; it is the one dependency an app declares",{"type":29,"tag":212,"props":331,"children":332},{},[333,342,355],{"type":29,"tag":239,"props":334,"children":335},{},[336],{"type":29,"tag":96,"props":337,"children":339},{"className":338},[],[340],{"type":38,"value":341},"gpui-base",{"type":29,"tag":239,"props":343,"children":344},{},[345,347,353],{"type":38,"value":346},"\"Unstyled behavior, controlled state, focus, overlays, virtual lists, dock infrastructure, and semantic design tokens.\" ",{"type":29,"tag":96,"props":348,"children":350},{"className":349},[],[351],{"type":38,"value":352},"Button::new(\"save\")",{"type":38,"value":354}," \"has no default height, padding, background, border, or radius\".",{"type":29,"tag":239,"props":356,"children":357},{},[358],{"type":38,"value":359},"\"You are building a design system and want to own every visual choice.\" Not V1 (D5)",{"type":29,"tag":212,"props":361,"children":362},{},[363,371,383],{"type":29,"tag":239,"props":364,"children":365},{},[366],{"type":29,"tag":96,"props":367,"children":369},{"className":368},[],[370],{"type":38,"value":101},{"type":29,"tag":239,"props":372,"children":373},{},[374,376,381],{"type":38,"value":375},"The styled library: 80 component pages, themes, data tables, dock, editor. Builds on ",{"type":29,"tag":96,"props":377,"children":379},{"className":378},[],[380],{"type":38,"value":341},{"type":38,"value":382},"; \"Applications can use either layer directly.\"",{"type":29,"tag":239,"props":384,"children":385},{},[386,388],{"type":38,"value":387},"\"You want a complete set of styled, ready-to-use desktop components.\" ",{"type":29,"tag":34,"props":389,"children":390},{},[391],{"type":38,"value":392},"Our layer (D2).",{"type":29,"tag":212,"props":394,"children":395},{},[396,405,410],{"type":29,"tag":239,"props":397,"children":398},{},[399],{"type":29,"tag":96,"props":400,"children":402},{"className":401},[],[403],{"type":38,"value":404},"gpui-shell",{"type":29,"tag":239,"props":406,"children":407},{},[408],{"type":38,"value":409},"JavaScript extensions on QuickJS, \"one granted capability at a time\". \"It is not an Electron or a Tauri. There is no WebView, no DOM, no HTML or CSS.\" At \"Milestone M0… not a stable interface\".",{"type":29,"tag":239,"props":411,"children":412},{},[413],{"type":38,"value":414},"Later, if notices or trainings should arrive as scripts without a new binary (c133, c137)",{"type":29,"tag":30,"props":416,"children":417},{},[418,420,425,427,432,434],{"type":38,"value":419},"Rule from the architecture doc: ",{"type":29,"tag":96,"props":421,"children":423},{"className":422},[],[424],{"type":38,"value":341},{"type":38,"value":426}," \"must not import ",{"type":29,"tag":96,"props":428,"children":430},{"className":429},[],[431],{"type":38,"value":101},{"type":38,"value":433}," themes, assets, or façade types\"; the arrow runs application → component → base → GPUI. — ",{"type":29,"tag":43,"props":435,"children":438},{"href":436,"rel":437},"https:\u002F\u002Fraw.githubusercontent.com\u002Flongbridge\u002Fgpui-kit\u002Fmain\u002Fdocs\u002FARCHITECTURE.md",[79],[439],{"type":38,"value":436},{"type":29,"tag":30,"props":441,"children":442},{},[443,445,450,451,456,457,462,463,469,470,476,478,484,485,490,491,497,499,504,506,512,513,519,520,526,527,533,534,540,541,547,548,554,555,561,563,569,571],{"type":38,"value":444},"Published crates, all 0.9.1: ",{"type":29,"tag":96,"props":446,"children":448},{"className":447},[],[449],{"type":38,"value":283},{"type":38,"value":83},{"type":29,"tag":96,"props":452,"children":454},{"className":453},[],[455],{"type":38,"value":341},{"type":38,"value":83},{"type":29,"tag":96,"props":458,"children":460},{"className":459},[],[461],{"type":38,"value":101},{"type":38,"value":83},{"type":29,"tag":96,"props":464,"children":466},{"className":465},[],[467],{"type":38,"value":468},"gpui-component-macros",{"type":38,"value":83},{"type":29,"tag":96,"props":471,"children":473},{"className":472},[],[474],{"type":38,"value":475},"gpui-kit-assets",{"type":38,"value":477}," (Lucide icons), ",{"type":29,"tag":96,"props":479,"children":481},{"className":480},[],[482],{"type":38,"value":483},"gpui-fps",{"type":38,"value":83},{"type":29,"tag":96,"props":486,"children":488},{"className":487},[],[489],{"type":38,"value":404},{"type":38,"value":83},{"type":29,"tag":96,"props":492,"children":494},{"className":493},[],[495],{"type":38,"value":496},"gpui-webview",{"type":38,"value":498},". Features on ",{"type":29,"tag":96,"props":500,"children":502},{"className":501},[],[503],{"type":38,"value":283},{"type":38,"value":505},": ",{"type":29,"tag":96,"props":507,"children":509},{"className":508},[],[510],{"type":38,"value":511},"default = [\"component\", \"assets\"]",{"type":38,"value":83},{"type":29,"tag":96,"props":514,"children":516},{"className":515},[],[517],{"type":38,"value":518},"gpui-fast",{"type":38,"value":83},{"type":29,"tag":96,"props":521,"children":523},{"className":522},[],[524],{"type":38,"value":525},"test-support",{"type":38,"value":83},{"type":29,"tag":96,"props":528,"children":530},{"className":529},[],[531],{"type":38,"value":532},"inspector",{"type":38,"value":83},{"type":29,"tag":96,"props":535,"children":537},{"className":536},[],[538],{"type":38,"value":539},"profiler",{"type":38,"value":83},{"type":29,"tag":96,"props":542,"children":544},{"className":543},[],[545],{"type":38,"value":546},"speech",{"type":38,"value":83},{"type":29,"tag":96,"props":549,"children":551},{"className":550},[],[552],{"type":38,"value":553},"syntect",{"type":38,"value":83},{"type":29,"tag":96,"props":556,"children":558},{"className":557},[],[559],{"type":38,"value":560},"tree-sitter",{"type":38,"value":562}," and one ",{"type":29,"tag":96,"props":564,"children":566},{"className":565},[],[567],{"type":38,"value":568},"tree-sitter-\u003Clang>",{"type":38,"value":570}," per grammar. — ",{"type":29,"tag":43,"props":572,"children":575},{"href":573,"rel":574},"https:\u002F\u002Fraw.githubusercontent.com\u002Flongbridge\u002Fgpui-kit\u002Fmain\u002Fcrates\u002Fkit\u002FCargo.toml",[79],[576],{"type":38,"value":573},{"type":29,"tag":60,"props":578,"children":580},{"id":579},"components-our-pages-need",[581],{"type":38,"value":15},{"type":29,"tag":204,"props":583,"children":584},{},[585,606],{"type":29,"tag":208,"props":586,"children":587},{},[588],{"type":29,"tag":212,"props":589,"children":590},{},[591,596,601],{"type":29,"tag":216,"props":592,"children":593},{},[594],{"type":38,"value":595},"Need (page)",{"type":29,"tag":216,"props":597,"children":598},{},[599],{"type":38,"value":600},"Kit piece",{"type":29,"tag":216,"props":602,"children":603},{},[604],{"type":38,"value":605},"Notes",{"type":29,"tag":232,"props":607,"children":608},{},[609,668,689,707,743,761,826,870,901],{"type":29,"tag":212,"props":610,"children":611},{},[612,617,635],{"type":29,"tag":239,"props":613,"children":614},{},[615],{"type":38,"value":616},"Inventory lists, Events log",{"type":29,"tag":239,"props":618,"children":619},{},[620,625,627,633],{"type":29,"tag":34,"props":621,"children":622},{},[623],{"type":38,"value":624},"DataTable",{"type":38,"value":626},": \"Virtual scrolling, fixed and resizable columns, sorting, and cell selection across hundreds of thousands of rows\"; a ",{"type":29,"tag":96,"props":628,"children":630},{"className":629},[],[631],{"type":38,"value":632},"TableDelegate",{"type":38,"value":634}," supplies columns, counts and cells; columns pin left or right; rows and columns virtualise; sorting the data is the delegate's job",{"type":29,"tag":239,"props":636,"children":637},{},[638,640,646,648,653,655,660,662],{"type":38,"value":639},"The old stateful ",{"type":29,"tag":96,"props":641,"children":643},{"className":642},[],[644],{"type":38,"value":645},"Table",{"type":38,"value":647}," became ",{"type":29,"tag":96,"props":649,"children":651},{"className":650},[],[652],{"type":38,"value":624},{"type":38,"value":654}," in 0.6.0; ",{"type":29,"tag":96,"props":656,"children":658},{"className":657},[],[659],{"type":38,"value":645},{"type":38,"value":661}," is now a declarative element. — ",{"type":29,"tag":43,"props":663,"children":666},{"href":664,"rel":665},"https:\u002F\u002Fgpui-kit.com\u002Fcomponent\u002Fdata-table",[79],[667],{"type":38,"value":664},{"type":29,"tag":212,"props":669,"children":670},{},[671,676,686],{"type":29,"tag":239,"props":672,"children":673},{},[674],{"type":38,"value":675},"Long lists",{"type":29,"tag":239,"props":677,"children":678},{},[679,684],{"type":29,"tag":34,"props":680,"children":681},{},[682],{"type":38,"value":683},"VirtualList",{"type":38,"value":685},": \"Render only the visible range, including differently sized items.\"",{"type":29,"tag":239,"props":687,"children":688},{},[],{"type":29,"tag":212,"props":690,"children":691},{},[692,697,702],{"type":29,"tag":239,"props":693,"children":694},{},[695],{"type":38,"value":696},"Status cards, Config panes",{"type":29,"tag":239,"props":698,"children":699},{},[700],{"type":38,"value":701},"Sidebar, Tabs, GroupBox, DescriptionList, Form, Input, Select, Switch, Badge, Tag, Alert, Empty, Skeleton, Progress",{"type":29,"tag":239,"props":703,"children":704},{},[705],{"type":38,"value":706},"Empty and Skeleton cover R5's honest states",{"type":29,"tag":212,"props":708,"children":709},{},[710,715,732],{"type":29,"tag":239,"props":711,"children":712},{},[713],{"type":38,"value":714},"Status resources",{"type":29,"tag":239,"props":716,"children":717},{},[718,723,725,731],{"type":29,"tag":34,"props":719,"children":720},{},[721],{"type":38,"value":722},"Charts",{"type":38,"value":724},": Line, Bar, Area, Pie, Radar, Candlestick, Sankey; appear animation on by default since 0.7.1 (",{"type":29,"tag":96,"props":726,"children":728},{"className":727},[],[729],{"type":38,"value":730},".appear(false)",{"type":38,"value":256},{"type":29,"tag":239,"props":733,"children":734},{},[735,737],{"type":38,"value":736},"— ",{"type":29,"tag":43,"props":738,"children":741},{"href":739,"rel":740},"https:\u002F\u002Fgpui-kit.com\u002Fcomponent\u002Fchart",[79],[742],{"type":38,"value":739},{"type":29,"tag":212,"props":744,"children":745},{},[746,751,756],{"type":29,"tag":239,"props":747,"children":748},{},[749],{"type":38,"value":750},"Events detail",{"type":29,"tag":239,"props":752,"children":753},{},[754],{"type":38,"value":755},"TextView (selectable Markdown and HTML, no CSS layout), Tree (for a JSON tree), Editor (rope, Tree-sitter or syntect)",{"type":29,"tag":239,"props":757,"children":758},{},[759],{"type":38,"value":760},"The Editor is heavy; a read-only TextView may do",{"type":29,"tag":212,"props":762,"children":763},{},[764,769,809],{"type":29,"tag":239,"props":765,"children":766},{},[767],{"type":38,"value":768},"Dialogs, toasts",{"type":29,"tag":239,"props":770,"children":771},{},[772,777,779,785,786,792,793,799,801,807],{"type":29,"tag":34,"props":773,"children":774},{},[775],{"type":38,"value":776},"Root",{"type":38,"value":778}," \"always mounts the dialog, sheet and notification layers above application content\"; ",{"type":29,"tag":96,"props":780,"children":782},{"className":781},[],[783],{"type":38,"value":784},"window.open_dialog",{"type":38,"value":83},{"type":29,"tag":96,"props":787,"children":789},{"className":788},[],[790],{"type":38,"value":791},"window.open_sheet",{"type":38,"value":83},{"type":29,"tag":96,"props":794,"children":796},{"className":795},[],[797],{"type":38,"value":798},"window.push_notification",{"type":38,"value":800},"; ",{"type":29,"tag":96,"props":802,"children":804},{"className":803},[],[805],{"type":38,"value":806},"Notification::info(...).system()",{"type":38,"value":808}," routes to the OS",{"type":29,"tag":239,"props":810,"children":811},{},[812,813,819,820],{"type":38,"value":736},{"type":29,"tag":43,"props":814,"children":817},{"href":815,"rel":816},"https:\u002F\u002Fgpui-kit.com\u002Fcomponent\u002Froot",[79],[818],{"type":38,"value":815},{"type":38,"value":83},{"type":29,"tag":43,"props":821,"children":824},{"href":822,"rel":823},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Fsystem-notification",[79],[825],{"type":38,"value":822},{"type":29,"tag":212,"props":827,"children":828},{},[829,834,860],{"type":29,"tag":239,"props":830,"children":831},{},[832],{"type":38,"value":833},"Window chrome",{"type":29,"tag":239,"props":835,"children":836},{},[837,842,844,850,852,858],{"type":29,"tag":34,"props":838,"children":839},{},[840],{"type":38,"value":841},"TitleBar",{"type":38,"value":843}," with a menu bar; ",{"type":29,"tag":96,"props":845,"children":847},{"className":846},[],[848],{"type":38,"value":849},"TitleBar::window_options()",{"type":38,"value":851}," as the base ",{"type":29,"tag":96,"props":853,"children":855},{"className":854},[],[856],{"type":38,"value":857},"WindowOptions",{"type":38,"value":859},"; native traffic lights on macOS, drawn controls on Linux",{"type":29,"tag":239,"props":861,"children":862},{},[863,864],{"type":38,"value":736},{"type":29,"tag":43,"props":865,"children":868},{"href":866,"rel":867},"https:\u002F\u002Fgpui-kit.com\u002Fcomponent\u002Ftitle-bar",[79],[869],{"type":38,"value":866},{"type":29,"tag":212,"props":871,"children":872},{},[873,878,896],{"type":29,"tag":239,"props":874,"children":875},{},[876],{"type":38,"value":877},"Workspace layouts",{"type":29,"tag":239,"props":879,"children":880},{},[881,886,888,894],{"type":29,"tag":34,"props":882,"children":883},{},[884],{"type":38,"value":885},"Dock",{"type":38,"value":887},": tab groups, nested splits, collapsible docks; ",{"type":29,"tag":96,"props":889,"children":891},{"className":890},[],[892],{"type":38,"value":893},"DockLayout",{"type":38,"value":895}," \"is a value… serialize it, compare it\"; \"the layout foundation used by Longbridge in production\"",{"type":29,"tag":239,"props":897,"children":898},{},[899],{"type":38,"value":900},"Probably not V1",{"type":29,"tag":212,"props":902,"children":903},{},[904,909,919],{"type":29,"tag":239,"props":905,"children":906},{},[907],{"type":38,"value":908},"qmap embed (D8)",{"type":29,"tag":239,"props":910,"children":911},{},[912,917],{"type":29,"tag":96,"props":913,"children":915},{"className":914},[],[916],{"type":38,"value":496},{"type":38,"value":918},", experimental, X11 only on Linux",{"type":29,"tag":239,"props":920,"children":921},{},[922,924],{"type":38,"value":923},"Costed in ",{"type":29,"tag":43,"props":925,"children":927},{"href":926},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fcomparison",[928],{"type":38,"value":929},"comparison.md",{"type":29,"tag":30,"props":931,"children":932},{},[933,935],{"type":38,"value":934},"Chat surfaces (Message, Bubble, Attachment, Speech) and a Command palette exist too; the full list is 80 component pages and 40 primitive pages. — ",{"type":29,"tag":43,"props":936,"children":939},{"href":937,"rel":938},"https:\u002F\u002Fgpui-kit.com\u002Fllms-full.txt",[79],[940],{"type":38,"value":937},{"type":29,"tag":60,"props":942,"children":944},{"id":943},"theming",[945],{"type":38,"value":16},{"type":29,"tag":30,"props":947,"children":948},{},[949],{"type":38,"value":950},"This is the part a designer needs, and the ground for c132's token bridge.",{"type":29,"tag":66,"props":952,"children":953},{},[954,1022,1159,1265,1281,1364,1402],{"type":29,"tag":70,"props":955,"children":956},{},[957,962,964,970,972,978,980,986,987,993,994,1000,1002,1007,1009,1015,1016],{"type":29,"tag":34,"props":958,"children":959},{},[960],{"type":38,"value":961},"Access.",{"type":38,"value":963}," ",{"type":29,"tag":96,"props":965,"children":967},{"className":966},[],[968],{"type":38,"value":969},"cx.theme()",{"type":38,"value":971}," through the ",{"type":29,"tag":96,"props":973,"children":975},{"className":974},[],[976],{"type":38,"value":977},"ActiveTheme",{"type":38,"value":979}," trait: ",{"type":29,"tag":96,"props":981,"children":983},{"className":982},[],[984],{"type":38,"value":985},"cx.theme().primary",{"type":38,"value":83},{"type":29,"tag":96,"props":988,"children":990},{"className":989},[],[991],{"type":38,"value":992},".background",{"type":38,"value":83},{"type":29,"tag":96,"props":995,"children":997},{"className":996},[],[998],{"type":38,"value":999},".foreground",{"type":38,"value":1001},". The coding guide forbids raw colours in app code: \"read a semantic color from ",{"type":29,"tag":96,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":38,"value":969},{"type":38,"value":1008}," or add the missing role to the product theme\". — ",{"type":29,"tag":43,"props":1010,"children":1013},{"href":1011,"rel":1012},"https:\u002F\u002Fgpui-kit.com\u002Fcomponent\u002Ftheme",[79],[1014],{"type":38,"value":1011},{"type":38,"value":83},{"type":29,"tag":43,"props":1017,"children":1020},{"href":1018,"rel":1019},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Fcoding-guides",[79],[1021],{"type":38,"value":1018},{"type":29,"tag":70,"props":1023,"children":1024},{},[1025,1030,1032,1038,1040,1045,1046,1052,1054,1060,1062,1068,1070,1076,1078,1084,1086,1091,1093,1099,1101,1107,1109,1115,1116,1122,1123,1129,1130,1136,1138,1144,1146,1152,1153],{"type":29,"tag":34,"props":1026,"children":1027},{},[1028],{"type":38,"value":1029},"Two vocabularies.",{"type":38,"value":1031}," The component ",{"type":29,"tag":96,"props":1033,"children":1035},{"className":1034},[],[1036],{"type":38,"value":1037},"ThemeColor",{"type":38,"value":1039}," has ",{"type":29,"tag":34,"props":1041,"children":1042},{},[1043],{"type":38,"value":1044},"134 roles",{"type":38,"value":505},{"type":29,"tag":96,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":38,"value":1051},"background, foreground, border, input, ring, selection, muted(+foreground), accent(+foreground), primary(+hover\u002Factive\u002Fforeground), secondary(+…), danger(+…), success(+…), warning(+…), info(+…), link(+hover\u002Factive), popover, sidebar(+foreground\u002Fborder\u002Faccent\u002Fprimary), title_bar, status_bar, scrollbar, list(+active\u002Feven\u002Fhead\u002Fhover), table(+active\u002Feven\u002Fhead\u002Ffoot\u002Fhover\u002Frow_border), tab(+active\u002Fbar\u002Fforeground), chart_bullish, chart_bearish, chart_grid, button(+primary\u002Fsecondary\u002Fdanger\u002Finfo\u002Fsuccess\u002Fwarning, each with hover\u002Factive\u002Fforeground)",{"type":38,"value":1053},", plus a base palette ",{"type":29,"tag":96,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":38,"value":1059},"red, green, blue, yellow, magenta, cyan",{"type":38,"value":1061}," with ",{"type":29,"tag":96,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":38,"value":1067},"_light",{"type":38,"value":1069}," variants. The word is ",{"type":29,"tag":96,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":38,"value":1075},"danger",{"type":38,"value":1077},", not ",{"type":29,"tag":96,"props":1079,"children":1081},{"className":1080},[],[1082],{"type":38,"value":1083},"destructive",{"type":38,"value":1085},". Beneath it, ",{"type":29,"tag":96,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":38,"value":341},{"type":38,"value":1092}," carries an 18-colour shadcn-shaped ",{"type":29,"tag":96,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":38,"value":1098},"ColorTokens",{"type":38,"value":1100}," set (",{"type":29,"tag":96,"props":1102,"children":1104},{"className":1103},[],[1105],{"type":38,"value":1106},"background, foreground, surface, primary, secondary, muted, accent, destructive, border, input, ring, selection",{"type":38,"value":1108},", each with a foreground) and scales for ",{"type":29,"tag":96,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":38,"value":1114},"radius {none sm md lg xl full}",{"type":38,"value":83},{"type":29,"tag":96,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":38,"value":1121},"spacing {xxs…xxl}",{"type":38,"value":83},{"type":29,"tag":96,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":38,"value":1128},"typography {sans, mono, xs…xl}",{"type":38,"value":83},{"type":29,"tag":96,"props":1131,"children":1133},{"className":1132},[],[1134],{"type":38,"value":1135},"shadow {sm md lg}",{"type":38,"value":1137},". \"Prefer ",{"type":29,"tag":96,"props":1139,"children":1141},{"className":1140},[],[1142],{"type":38,"value":1143},"Theme::semantic_tokens()",{"type":38,"value":1145}," for new application-owned presentation\". — ",{"type":29,"tag":43,"props":1147,"children":1150},{"href":1148,"rel":1149},"https:\u002F\u002Fraw.githubusercontent.com\u002Flongbridge\u002Fgpui-kit\u002Fmain\u002Fcrates\u002Fcomponent\u002Fsrc\u002Ftheme\u002Ftheme_color.rs",[79],[1151],{"type":38,"value":1148},{"type":38,"value":83},{"type":29,"tag":43,"props":1154,"children":1157},{"href":1155,"rel":1156},"https:\u002F\u002Fraw.githubusercontent.com\u002Flongbridge\u002Fgpui-kit\u002Fmain\u002Fcrates\u002Fbase\u002Fsrc\u002Ftheme_tokens.rs",[79],[1158],{"type":38,"value":1155},{"type":29,"tag":70,"props":1160,"children":1161},{},[1162,1167,1169,1175,1177,1183,1185,1191,1193,1199,1200,1206,1208,1214,1215,1221,1222,1228,1229,1235,1236,1242,1244,1250,1252,1258,1259],{"type":29,"tag":34,"props":1163,"children":1164},{},[1165],{"type":38,"value":1166},"A theme is a JSON file",{"type":38,"value":1168},", validated by ",{"type":29,"tag":96,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":38,"value":1174},".theme-schema.json",{"type":38,"value":1176},": a ",{"type":29,"tag":96,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":38,"value":1182},"ThemeSet",{"type":38,"value":1184}," (",{"type":29,"tag":96,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":38,"value":1190},"name, author, url, themes[]",{"type":38,"value":1192},"), each ",{"type":29,"tag":96,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":38,"value":1198},"ThemeConfig",{"type":38,"value":1061},{"type":29,"tag":96,"props":1201,"children":1203},{"className":1202},[],[1204],{"type":38,"value":1205},"name, mode, is_default, font.size, font.family, mono_font.family, radius, radius.lg, window.radius, shadow, colors, highlight",{"type":38,"value":1207},". Colour keys are dotted roles (",{"type":29,"tag":96,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":38,"value":1213},"\"primary.background\"",{"type":38,"value":83},{"type":29,"tag":96,"props":1216,"children":1218},{"className":1217},[],[1219],{"type":38,"value":1220},"\"primary.hover.background\"",{"type":38,"value":83},{"type":29,"tag":96,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":38,"value":1227},"\"sidebar.accent.foreground\"",{"type":38,"value":83},{"type":29,"tag":96,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":38,"value":1234},"\"table.row.border\"",{"type":38,"value":83},{"type":29,"tag":96,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":38,"value":1241},"\"chart.1\"",{"type":38,"value":1243},"); values take hex, Tailwind palette names (",{"type":29,"tag":96,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":38,"value":1249},"\"neutral-200\u002F60\"",{"type":38,"value":1251},") and gradients on tokens that opt in. The default theme is shadcn's neutral palette with 99 keys. — ",{"type":29,"tag":43,"props":1253,"children":1256},{"href":1254,"rel":1255},"https:\u002F\u002Fraw.githubusercontent.com\u002Flongbridge\u002Fgpui-kit\u002Fmain\u002F.theme-schema.json",[79],[1257],{"type":38,"value":1254},{"type":38,"value":83},{"type":29,"tag":43,"props":1260,"children":1263},{"href":1261,"rel":1262},"https:\u002F\u002Fraw.githubusercontent.com\u002Flongbridge\u002Fgpui-kit\u002Fmain\u002Fcrates\u002Fcomponent\u002Fsrc\u002Ftheme\u002Fdefault-theme.json",[79],[1264],{"type":38,"value":1261},{"type":29,"tag":70,"props":1266,"children":1267},{},[1268,1273,1275],{"type":29,"tag":34,"props":1269,"children":1270},{},[1271],{"type":38,"value":1272},"Built in:",{"type":38,"value":1274}," 21 theme files (ayu, catppuccin, gruvbox, solarized, tokyonight, macos-classic…), \"38 (36 variants + Light\u002FDark)\" presets. — ",{"type":29,"tag":43,"props":1276,"children":1279},{"href":1277,"rel":1278},"https:\u002F\u002Fapi.github.com\u002Frepos\u002Flongbridge\u002Fgpui-kit\u002Fcontents\u002Fthemes",[79],[1280],{"type":38,"value":1277},{"type":29,"tag":70,"props":1282,"children":1283},{},[1284,1289,1290,1296,1298,1304,1305,1311,1313,1319,1321,1327,1329,1335,1337,1343,1345,1351,1353,1358,1359],{"type":29,"tag":34,"props":1285,"children":1286},{},[1287],{"type":38,"value":1288},"Loading and switching:",{"type":38,"value":963},{"type":29,"tag":96,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":38,"value":1295},"ThemeRegistry::watch_dir(\".\u002Fthemes\", cx, …)",{"type":38,"value":1297},", then ",{"type":29,"tag":96,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":38,"value":1303},"Theme::update(cx, |t| t.apply_config(&config))",{"type":38,"value":800},{"type":29,"tag":96,"props":1306,"children":1308},{"className":1307},[],[1309],{"type":38,"value":1310},"Theme::change(ThemeMode::Dark, None, cx)",{"type":38,"value":1312}," \"refreshes every window\"; ",{"type":29,"tag":96,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":38,"value":1318},"Theme::sync_system_appearance(window, cx)",{"type":38,"value":1320}," follows the OS when the app wires ",{"type":29,"tag":96,"props":1322,"children":1324},{"className":1323},[],[1325],{"type":38,"value":1326},"observe_window_appearance",{"type":38,"value":1328}," to it. ",{"type":29,"tag":96,"props":1330,"children":1332},{"className":1331},[],[1333],{"type":38,"value":1334},"gpui_component::init",{"type":38,"value":1336}," starts in Light. Since 0.9.0 the theme structs are ",{"type":29,"tag":96,"props":1338,"children":1340},{"className":1339},[],[1341],{"type":38,"value":1342},"#[non_exhaustive]",{"type":38,"value":1344},": start from ",{"type":29,"tag":96,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":38,"value":1350},"Default::default()",{"type":38,"value":1352},". — ",{"type":29,"tag":43,"props":1354,"children":1356},{"href":1011,"rel":1355},[79],[1357],{"type":38,"value":1011},{"type":38,"value":83},{"type":29,"tag":43,"props":1360,"children":1362},{"href":137,"rel":1361},[79],[1363],{"type":38,"value":137},{"type":29,"tag":70,"props":1365,"children":1366},{},[1367,1372,1373,1378,1380,1386,1388,1394,1396],{"type":29,"tag":34,"props":1368,"children":1369},{},[1370],{"type":38,"value":1371},"Zoom is the base font.",{"type":38,"value":963},{"type":29,"tag":96,"props":1374,"children":1376},{"className":1375},[],[1377],{"type":38,"value":776},{"type":38,"value":1379}," calls ",{"type":29,"tag":96,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":38,"value":1385},"window.set_rem_size(cx.theme().font_size)",{"type":38,"value":1387},", so ",{"type":29,"tag":96,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":38,"value":1393},"theme.font_size = px(18.)",{"type":38,"value":1395}," scales everything built with rem helpers. Radius: a finite scale, inner radius ≈ outer minus the gap; density tiers with Medium as default. — ",{"type":29,"tag":43,"props":1397,"children":1400},{"href":1398,"rel":1399},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Fdesign-guides",[79],[1401],{"type":38,"value":1398},{"type":29,"tag":70,"props":1403,"children":1404},{},[1405,1410,1412,1418,1420,1426,1428,1434,1436,1442,1444,1448,1449],{"type":29,"tag":34,"props":1406,"children":1407},{},[1408],{"type":38,"value":1409},"Fonts:",{"type":38,"value":1411}," theme ",{"type":29,"tag":96,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":38,"value":1417},"font_family",{"type":38,"value":1419}," \u002F ",{"type":29,"tag":96,"props":1421,"children":1423},{"className":1422},[],[1424],{"type":38,"value":1425},"mono_font_family",{"type":38,"value":1427},"; \"Use the platform UI font for interface text and monospace only for code\"; bundle a font with ",{"type":29,"tag":96,"props":1429,"children":1431},{"className":1430},[],[1432],{"type":38,"value":1433},"include_bytes!",{"type":38,"value":1435}," + ",{"type":29,"tag":96,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":38,"value":1441},"add_fonts",{"type":38,"value":1443},", then name it in the theme. Licensing in ",{"type":29,"tag":43,"props":1445,"children":1446},{"href":53},[1447],{"type":38,"value":56},{"type":38,"value":1352},{"type":29,"tag":43,"props":1450,"children":1453},{"href":1451,"rel":1452},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Ffonts",[79],[1454],{"type":38,"value":1451},{"type":29,"tag":30,"props":1456,"children":1457},{},[1458],{"type":38,"value":1459},"A first sketch of the bridge, for c132 to test (not a ruling):",{"type":29,"tag":204,"props":1461,"children":1462},{},[1463,1486],{"type":29,"tag":208,"props":1464,"children":1465},{},[1466],{"type":29,"tag":212,"props":1467,"children":1468},{},[1469,1481],{"type":29,"tag":216,"props":1470,"children":1471},{},[1472,1474,1480],{"type":38,"value":1473},"Qpoint token (",{"type":29,"tag":96,"props":1475,"children":1477},{"className":1476},[],[1478],{"type":38,"value":1479},"brand\u002Fdesign_tokens.md",{"type":38,"value":256},{"type":29,"tag":216,"props":1482,"children":1483},{},[1484],{"type":38,"value":1485},"Kit role",{"type":29,"tag":232,"props":1487,"children":1488},{},[1489,1542,1581,1640,1687],{"type":29,"tag":212,"props":1490,"children":1491},{},[1492,1505],{"type":29,"tag":239,"props":1493,"children":1494},{},[1495,1497,1503],{"type":38,"value":1496},"Grape 500 ",{"type":29,"tag":96,"props":1498,"children":1500},{"className":1499},[],[1501],{"type":38,"value":1502},"#895AE8",{"type":38,"value":1504},", 600 hover, 700 active",{"type":29,"tag":239,"props":1506,"children":1507},{},[1508,1514,1515,1521,1522,1528,1529,1535,1536],{"type":29,"tag":96,"props":1509,"children":1511},{"className":1510},[],[1512],{"type":38,"value":1513},"primary",{"type":38,"value":83},{"type":29,"tag":96,"props":1516,"children":1518},{"className":1517},[],[1519],{"type":38,"value":1520},"primary.hover",{"type":38,"value":83},{"type":29,"tag":96,"props":1523,"children":1525},{"className":1524},[],[1526],{"type":38,"value":1527},"primary.active",{"type":38,"value":800},{"type":29,"tag":96,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":38,"value":1534},"ring",{"type":38,"value":800},{"type":29,"tag":96,"props":1537,"children":1539},{"className":1538},[],[1540],{"type":38,"value":1541},"link",{"type":29,"tag":212,"props":1543,"children":1544},{},[1545,1556],{"type":29,"tag":239,"props":1546,"children":1547},{},[1548,1550],{"type":38,"value":1549},"Leaf 300 ",{"type":29,"tag":96,"props":1551,"children":1553},{"className":1552},[],[1554],{"type":38,"value":1555},"#58E392",{"type":29,"tag":239,"props":1557,"children":1558},{},[1559,1565,1567,1572,1574,1580],{"type":29,"tag":96,"props":1560,"children":1562},{"className":1561},[],[1563],{"type":38,"value":1564},"success",{"type":38,"value":1566}," (never ",{"type":29,"tag":96,"props":1568,"children":1570},{"className":1569},[],[1571],{"type":38,"value":1075},{"type":38,"value":1573}," or ",{"type":29,"tag":96,"props":1575,"children":1577},{"className":1576},[],[1578],{"type":38,"value":1579},"warning",{"type":38,"value":256},{"type":29,"tag":212,"props":1582,"children":1583},{},[1584,1589],{"type":29,"tag":239,"props":1585,"children":1586},{},[1587],{"type":38,"value":1588},"Grey 900 \u002F 600 text, Grey 50\u002F100 surfaces, Grey 200\u002F300 borders",{"type":29,"tag":239,"props":1590,"children":1591},{},[1592,1598,1599,1605,1606,1612,1613,1619,1620,1626,1627,1633,1634],{"type":29,"tag":96,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":38,"value":1597},"foreground",{"type":38,"value":1419},{"type":29,"tag":96,"props":1600,"children":1602},{"className":1601},[],[1603],{"type":38,"value":1604},"muted.foreground",{"type":38,"value":83},{"type":29,"tag":96,"props":1607,"children":1609},{"className":1608},[],[1610],{"type":38,"value":1611},"background",{"type":38,"value":1419},{"type":29,"tag":96,"props":1614,"children":1616},{"className":1615},[],[1617],{"type":38,"value":1618},"sidebar",{"type":38,"value":1419},{"type":29,"tag":96,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":38,"value":1625},"list.even",{"type":38,"value":83},{"type":29,"tag":96,"props":1628,"children":1630},{"className":1629},[],[1631],{"type":38,"value":1632},"border",{"type":38,"value":1419},{"type":29,"tag":96,"props":1635,"children":1637},{"className":1636},[],[1638],{"type":38,"value":1639},"table.row.border",{"type":29,"tag":212,"props":1641,"children":1642},{},[1643,1666],{"type":29,"tag":239,"props":1644,"children":1645},{},[1646,1652,1653,1659,1660],{"type":29,"tag":96,"props":1647,"children":1649},{"className":1648},[],[1650],{"type":38,"value":1651},"error #EF4444",{"type":38,"value":83},{"type":29,"tag":96,"props":1654,"children":1656},{"className":1655},[],[1657],{"type":38,"value":1658},"warning #F59E0B",{"type":38,"value":83},{"type":29,"tag":96,"props":1661,"children":1663},{"className":1662},[],[1664],{"type":38,"value":1665},"info #D7CAFE",{"type":29,"tag":239,"props":1667,"children":1668},{},[1669,1674,1675,1680,1681],{"type":29,"tag":96,"props":1670,"children":1672},{"className":1671},[],[1673],{"type":38,"value":1075},{"type":38,"value":83},{"type":29,"tag":96,"props":1676,"children":1678},{"className":1677},[],[1679],{"type":38,"value":1579},{"type":38,"value":83},{"type":29,"tag":96,"props":1682,"children":1684},{"className":1683},[],[1685],{"type":38,"value":1686},"info",{"type":29,"tag":212,"props":1688,"children":1689},{},[1690,1695],{"type":29,"tag":239,"props":1691,"children":1692},{},[1693],{"type":38,"value":1694},"Inter \u002F Geist Mono",{"type":29,"tag":239,"props":1696,"children":1697},{},[1698,1704,1705,1711],{"type":29,"tag":96,"props":1699,"children":1701},{"className":1700},[],[1702],{"type":38,"value":1703},"font.family",{"type":38,"value":1419},{"type":29,"tag":96,"props":1706,"children":1708},{"className":1707},[],[1709],{"type":38,"value":1710},"mono_font.family",{"type":38,"value":1712},", if shipped (c131 Q5)",{"type":29,"tag":60,"props":1714,"children":1716},{"id":1715},"the-app-skeleton",[1717],{"type":38,"value":17},{"type":29,"tag":1719,"props":1720,"children":1726},"pre",{"className":1721,"code":1722,"language":1723,"meta":1724,"style":1725},"language-rust","use gpui_kit::*;\nfn main() {\n    application().with_assets(assets::Assets).run(|cx| {\n        init(cx);                                   \u002F\u002F themes and the enabled layers; before any window\n        open_window(WindowOptions::default(), cx,   \u002F\u002F cx.open_window plus the Root wrapper\n            |_, cx| cx.new(|_| HelloWorld)).expect(\"Failed to open window\");\n    });\n}\n","rust","","undefined",[1727],{"type":29,"tag":96,"props":1728,"children":1729},{"__ignoreMap":1724},[1730],{"type":38,"value":1722},{"type":29,"tag":30,"props":1732,"children":1733},{},[1734,1736,1741,1743,1748,1750,1756,1757,1763,1764],{"type":38,"value":1735},"\"",{"type":29,"tag":96,"props":1737,"children":1739},{"className":1738},[],[1740],{"type":38,"value":776},{"type":38,"value":1742}," owns the window's overlay layers, including dialogs, sheets and notifications. Return your content view from the closure, not another ",{"type":29,"tag":96,"props":1744,"children":1746},{"className":1745},[],[1747],{"type":38,"value":776},{"type":38,"value":1749},".\" Quit and close actions are the app's to define. On Linux with a WebView, start with ",{"type":29,"tag":96,"props":1751,"children":1753},{"className":1752},[],[1754],{"type":38,"value":1755},"gpui_kit::platform::linux(WindowingModes::X11)",{"type":38,"value":1352},{"type":29,"tag":43,"props":1758,"children":1761},{"href":1759,"rel":1760},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Fgetting-started",[79],[1762],{"type":38,"value":1759},{"type":38,"value":83},{"type":29,"tag":43,"props":1765,"children":1767},{"href":815,"rel":1766},[79],[1768],{"type":38,"value":815},{"type":29,"tag":30,"props":1770,"children":1771},{},[1772,1774,1780,1782,1788,1790,1796,1798,1804,1806,1812,1814],{"type":38,"value":1773},"The repo's ",{"type":29,"tag":96,"props":1775,"children":1777},{"className":1776},[],[1778],{"type":38,"value":1779},"crates\u002Fstory",{"type":38,"value":1781}," is the gallery (",{"type":29,"tag":96,"props":1783,"children":1785},{"className":1784},[],[1786],{"type":38,"value":1787},"cargo run",{"type":38,"value":1789}," opens it; ",{"type":29,"tag":96,"props":1791,"children":1793},{"className":1792},[],[1794],{"type":38,"value":1795},"cargo run -p gpui-component-story -- NotificationStory",{"type":38,"value":1797}," opens one story), with 86 stories; ",{"type":29,"tag":96,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":38,"value":1803},"examples\u002F",{"type":38,"value":1805}," holds 30 runnable apps (hello_world, dock, editor, markdown, webview, system_monitor…). Our ",{"type":29,"tag":96,"props":1807,"children":1809},{"className":1808},[],[1810],{"type":38,"value":1811},"stories",{"type":38,"value":1813}," crate (c131 R6) follows this shape. — ",{"type":29,"tag":43,"props":1815,"children":1818},{"href":1816,"rel":1817},"https:\u002F\u002Fapi.github.com\u002Frepos\u002Flongbridge\u002Fgpui-kit\u002Fcontents\u002Fcrates\u002Fstory\u002Fsrc\u002Fstories",[79],[1819],{"type":38,"value":1816},{"type":29,"tag":60,"props":1821,"children":1823},{"id":1822},"headless-ui-tests",[1824],{"type":38,"value":18},{"type":29,"tag":30,"props":1826,"children":1827},{},[1828,1830,1835,1837,1842,1844],{"type":38,"value":1829},"\"A ",{"type":29,"tag":34,"props":1831,"children":1832},{},[1833],{"type":38,"value":1834},"UI integration test",{"type":38,"value":1836}," renders real components or an application view in a headless window, simulates clicks, keyboard input and scrolling, then verifies state, focus, layout and application callbacks.\" Enabled by the ",{"type":29,"tag":96,"props":1838,"children":1840},{"className":1839},[],[1841],{"type":38,"value":525},{"type":38,"value":1843}," feature; \"no additional testing crate, GPUI fork or Cargo patch\". — ",{"type":29,"tag":43,"props":1845,"children":1848},{"href":1846,"rel":1847},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Ftest",[79],[1849],{"type":38,"value":1846},{"type":29,"tag":1719,"props":1851,"children":1853},{"className":1721,"code":1852,"language":1723,"meta":1724,"style":1725},"#[gpui_kit::test]\nfn saves_a_profile_through_the_ui(cx: &mut TestAppContext) {\n    \u002F\u002F … open the window …\n    window.render_frame(cx);\n    window.click(\"name\", cx);\n    window.input(\"Ada\", cx);\n    window.click(\"save\", cx);\n    assert_eq!(window.find(\"status\").label(), Some(\"Saved: Ada\"));\n    assert_eq!(profile.read(cx).submitted.as_deref(), Some(\"Ada\"));\n}\n",[1854],{"type":29,"tag":96,"props":1855,"children":1856},{"__ignoreMap":1724},[1857],{"type":38,"value":1852},{"type":29,"tag":66,"props":1859,"children":1860},{},[1861,2008,2013],{"type":29,"tag":70,"props":1862,"children":1863},{},[1864,1866,1872,1873,1879,1880,1886,1887,1893,1894,1900,1901,1907,1908,1914,1915,1921,1922,1928,1929,1935,1936,1942,1943,1949,1951,1957,1958,1964,1965,1971,1972,1978,1979,1985,1986,1992,1994,2000,2001,2007],{"type":38,"value":1865},"API: ",{"type":29,"tag":96,"props":1867,"children":1869},{"className":1868},[],[1870],{"type":38,"value":1871},"find(id)",{"type":38,"value":83},{"type":29,"tag":96,"props":1874,"children":1876},{"className":1875},[],[1877],{"type":38,"value":1878},"find_all",{"type":38,"value":83},{"type":29,"tag":96,"props":1881,"children":1883},{"className":1882},[],[1884],{"type":38,"value":1885},"within(id)",{"type":38,"value":83},{"type":29,"tag":96,"props":1888,"children":1890},{"className":1889},[],[1891],{"type":38,"value":1892},"click",{"type":38,"value":83},{"type":29,"tag":96,"props":1895,"children":1897},{"className":1896},[],[1898],{"type":38,"value":1899},"right_click",{"type":38,"value":83},{"type":29,"tag":96,"props":1902,"children":1904},{"className":1903},[],[1905],{"type":38,"value":1906},"double_click",{"type":38,"value":83},{"type":29,"tag":96,"props":1909,"children":1911},{"className":1910},[],[1912],{"type":38,"value":1913},"hover",{"type":38,"value":83},{"type":29,"tag":96,"props":1916,"children":1918},{"className":1917},[],[1919],{"type":38,"value":1920},"scroll",{"type":38,"value":83},{"type":29,"tag":96,"props":1923,"children":1925},{"className":1924},[],[1926],{"type":38,"value":1927},"drag",{"type":38,"value":83},{"type":29,"tag":96,"props":1930,"children":1932},{"className":1931},[],[1933],{"type":38,"value":1934},"press(\"backspace\")",{"type":38,"value":83},{"type":29,"tag":96,"props":1937,"children":1939},{"className":1938},[],[1940],{"type":38,"value":1941},"input",{"type":38,"value":83},{"type":29,"tag":96,"props":1944,"children":1946},{"className":1945},[],[1947],{"type":38,"value":1948},"render_frame",{"type":38,"value":1950},"; snapshots give ",{"type":29,"tag":96,"props":1952,"children":1954},{"className":1953},[],[1955],{"type":38,"value":1956},"role()",{"type":38,"value":83},{"type":29,"tag":96,"props":1959,"children":1961},{"className":1960},[],[1962],{"type":38,"value":1963},"bounds()",{"type":38,"value":83},{"type":29,"tag":96,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":38,"value":1970},"visible()",{"type":38,"value":83},{"type":29,"tag":96,"props":1973,"children":1975},{"className":1974},[],[1976],{"type":38,"value":1977},"focused()",{"type":38,"value":83},{"type":29,"tag":96,"props":1980,"children":1982},{"className":1981},[],[1983],{"type":38,"value":1984},"disabled()",{"type":38,"value":83},{"type":29,"tag":96,"props":1987,"children":1989},{"className":1988},[],[1990],{"type":38,"value":1991},"label()",{"type":38,"value":1993}," (the accessibility name, not visible text), ",{"type":29,"tag":96,"props":1995,"children":1997},{"className":1996},[],[1998],{"type":38,"value":1999},"value()",{"type":38,"value":83},{"type":29,"tag":96,"props":2002,"children":2004},{"className":2003},[],[2005],{"type":38,"value":2006},"checked()",{"type":38,"value":324},{"type":29,"tag":70,"props":2009,"children":2010},{},[2011],{"type":38,"value":2012},"Limits: no general rendered-text assertion (\"The pinned GPUI version does not expose an enumeration of anonymous rendered text\"); no positive enabled assertion.",{"type":29,"tag":70,"props":2014,"children":2015},{},[2016,2018,2024,2025,2031,2033,2039,2041,2047,2049],{"type":38,"value":2017},"CI: the kit runs its suite on ",{"type":29,"tag":96,"props":2019,"children":2021},{"className":2020},[],[2022],{"type":38,"value":2023},"ubuntu-latest",{"type":38,"value":83},{"type":29,"tag":96,"props":2026,"children":2028},{"className":2027},[],[2029],{"type":38,"value":2030},"macos-latest",{"type":38,"value":2032}," and ",{"type":29,"tag":96,"props":2034,"children":2036},{"className":2035},[],[2037],{"type":38,"value":2038},"windows-latest",{"type":38,"value":2040}," with no Xvfb or ",{"type":29,"tag":96,"props":2042,"children":2044},{"className":2043},[],[2045],{"type":38,"value":2046},"DISPLAY",{"type":38,"value":2048},"; only the opt-in pixel suite needs a Vulkan driver. — ",{"type":29,"tag":43,"props":2050,"children":2053},{"href":2051,"rel":2052},"https:\u002F\u002Fraw.githubusercontent.com\u002Flongbridge\u002Fgpui-kit\u002Fmain\u002F.github\u002Fworkflows\u002Fci.yml",[79],[2054],{"type":38,"value":2051},{"type":29,"tag":30,"props":2056,"children":2057},{},[2058],{"type":38,"value":2059},"For us: this is \"the demo is the test\" in Rust. One story per page state, asserted by role and label, is both the design site and the regression suite (c131 R6, c132 medium B).",{"type":29,"tag":60,"props":2061,"children":2063},{"id":2062},"accesskit",[2064],{"type":38,"value":19},{"type":29,"tag":66,"props":2066,"children":2067},{},[2068,2094],{"type":29,"tag":70,"props":2069,"children":2070},{},[2071,2073,2079,2081,2087,2088],{"type":38,"value":2072},"Claim: \"AccessKit roles, names, states, relationships, and actions are built into the interaction layer and covered by tests.\" Per component: Button and Link (role, name, activation), Checkbox \u002F Switch \u002F Toggle \u002F Radio (checked state), Input (role by content type, value, ",{"type":29,"tag":96,"props":2074,"children":2076},{"className":2075},[],[2077],{"type":38,"value":2078},"SetValue",{"type":38,"value":2080},"; masked values withheld), Select (ComboBox), Tabs, Slider and Progress (numeric range), Table (\"row, header and cell roles with indices\"), DataTable grid role since 0.9.0. Icon-only buttons need ",{"type":29,"tag":96,"props":2082,"children":2084},{"className":2083},[],[2085],{"type":38,"value":2086},".accessibility_label(\"…\")",{"type":38,"value":1352},{"type":29,"tag":43,"props":2089,"children":2092},{"href":2090,"rel":2091},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Faccessibility",[79],[2093],{"type":38,"value":2090},{"type":29,"tag":70,"props":2095,"children":2096},{},[2097,2099,2104,2106,2112,2113],{"type":38,"value":2098},"Limits the kit states: \"A passing headless tree assertion cannot prove what a screen reader announces or whether a focus ring is visible\"; \"Check assistive technology separately on each target platform.\" It rates itself ",{"type":29,"tag":34,"props":2100,"children":2101},{},[2102],{"type":38,"value":2103},"Partial",{"type":38,"value":2105},". No screen-reader run is reported anywhere; four GPUI accessibility bugs were filed on 2026-11-08 and 09 by a library user. — ",{"type":29,"tag":43,"props":2107,"children":2110},{"href":2108,"rel":2109},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Fcomparison",[79],[2111],{"type":38,"value":2108},{"type":38,"value":83},{"type":29,"tag":43,"props":2114,"children":2117},{"href":2115,"rel":2116},"https:\u002F\u002Fgithub.com\u002Fzed-industries\u002Fzed\u002Fissues\u002F66691",[79],[2118],{"type":38,"value":2115},{"type":29,"tag":60,"props":2120,"children":2122},{"id":2121},"wasm-builds",[2123],{"type":38,"value":20},{"type":29,"tag":66,"props":2125,"children":2126},{},[2127,2145,2196,2224],{"type":29,"tag":70,"props":2128,"children":2129},{},[2130,2132,2137,2139],{"type":38,"value":2131},"\"WebAssembly support is used primarily to ",{"type":29,"tag":34,"props":2133,"children":2134},{},[2135],{"type":38,"value":2136},"showcase and try components in a browser",{"type":38,"value":2138},"… shipping an application in a browser is not a supported path yet.\" Label: Showcase only. — ",{"type":29,"tag":43,"props":2140,"children":2143},{"href":2141,"rel":2142},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Fwebassembly",[79],[2144],{"type":38,"value":2141},{"type":29,"tag":70,"props":2146,"children":2147},{},[2148,2150,2156,2157,2163,2165,2170,2172,2178,2180,2186,2188,2194],{"type":38,"value":2149},"Toolchain: ",{"type":29,"tag":96,"props":2151,"children":2153},{"className":2152},[],[2154],{"type":38,"value":2155},"wasm32-unknown-unknown",{"type":38,"value":1435},{"type":29,"tag":96,"props":2158,"children":2160},{"className":2159},[],[2161],{"type":38,"value":2162},"wasm-bindgen",{"type":38,"value":2164},"; the gallery pins ",{"type":29,"tag":34,"props":2166,"children":2167},{},[2168],{"type":38,"value":2169},"nightly",{"type":38,"value":2171}," (CI: ",{"type":29,"tag":96,"props":2173,"children":2175},{"className":2174},[],[2176],{"type":38,"value":2177},"nightly-2026-10-31",{"type":38,"value":2179},"). ",{"type":29,"tag":96,"props":2181,"children":2183},{"className":2182},[],[2184],{"type":38,"value":2185},"gpui_web",{"type":38,"value":2187}," builds on stable only with its ",{"type":29,"tag":96,"props":2189,"children":2191},{"className":2190},[],[2192],{"type":38,"value":2193},"multithreaded",{"type":38,"value":2195}," feature off; whether a kit app does is unverified. Backend: WebGPU, then WebGL2. One canvas, one window; dialogs render inside it; fonts must be embedded (no font database on the web); accessibility is painted into a canvas.",{"type":29,"tag":70,"props":2197,"children":2198},{},[2199,2201,2207,2209,2215,2217,2223],{"type":38,"value":2200},"The gallery at ",{"type":29,"tag":43,"props":2202,"children":2205},{"href":2203,"rel":2204},"https:\u002F\u002Fgpui-kit.com\u002Fgallery\u002F",[79],[2206],{"type":38,"value":2203},{"type":38,"value":2208}," takes ",{"type":29,"tag":96,"props":2210,"children":2212},{"className":2211},[],[2213],{"type":38,"value":2214},"?story=",{"type":38,"value":2216}," and a theme JSON; every Base primitive page embeds a live wasm example \"backed by the same example crate that can run natively\". Build: ",{"type":29,"tag":96,"props":2218,"children":2220},{"className":2219},[],[2221],{"type":38,"value":2222},"cd crates\u002Fstory-web && make dev",{"type":38,"value":324},{"type":29,"tag":70,"props":2225,"children":2226},{},[2227],{"type":38,"value":2228},"For c132 medium C: embedding a mock screen in a lab page is exactly the kit's own showcase use, and the theme JSON can be passed in. Fidelity of text input and tables in wasm, and the nightly toolchain, are the costs to measure.",{"type":29,"tag":60,"props":2230,"children":2232},{"id":2231},"version-churn",[2233],{"type":38,"value":21},{"type":29,"tag":30,"props":2235,"children":2236},{},[2237,2239,2244,2246,2256,2257,2263,2265,2271,2273,2278,2280,2286,2287],{"type":38,"value":2238},"The kit does not use crates.io ",{"type":29,"tag":96,"props":2240,"children":2242},{"className":2241},[],[2243],{"type":38,"value":247},{"type":38,"value":2245}," or a Zed git rev. It pins Longbridge's weekly ",{"type":29,"tag":34,"props":2247,"children":2248},{},[2249,2254],{"type":29,"tag":96,"props":2250,"children":2252},{"className":2251},[],[2253],{"type":38,"value":132},{"type":38,"value":2255}," snapshot exactly",{"type":38,"value":1184},{"type":29,"tag":96,"props":2258,"children":2260},{"className":2259},[],[2261],{"type":38,"value":2262},"=0.3.12",{"type":38,"value":2264}," today; \"a caret requirement let the weekly release move applications onto a newer snapshot that gpui-component did not compile with\"), and CI fails on a non-exact pin. Never pin a ",{"type":29,"tag":96,"props":2266,"children":2268},{"className":2267},[],[2269],{"type":38,"value":2270},"gpui-pre-*",{"type":38,"value":2272}," crate yourself. ",{"type":29,"tag":96,"props":2274,"children":2276},{"className":2275},[],[2277],{"type":38,"value":518},{"type":38,"value":2279}," is an optional feature that \"switches GPUI, native platforms, the WebAssembly backend, and every enabled Kit layer together\". — ",{"type":29,"tag":43,"props":2281,"children":2284},{"href":2282,"rel":2283},"https:\u002F\u002Fraw.githubusercontent.com\u002Flongbridge\u002Fgpui-kit\u002Fmain\u002FCargo.toml",[79],[2285],{"type":38,"value":2282},{"type":38,"value":83},{"type":29,"tag":43,"props":2288,"children":2291},{"href":2289,"rel":2290},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Finstallation",[79],[2292],{"type":38,"value":2289},{"type":29,"tag":204,"props":2294,"children":2295},{},[2296,2317],{"type":29,"tag":208,"props":2297,"children":2298},{},[2299],{"type":29,"tag":212,"props":2300,"children":2301},{},[2302,2307,2312],{"type":29,"tag":216,"props":2303,"children":2304},{},[2305],{"type":38,"value":2306},"Release",{"type":29,"tag":216,"props":2308,"children":2309},{},[2310],{"type":38,"value":2311},"Date",{"type":29,"tag":216,"props":2313,"children":2314},{},[2315],{"type":38,"value":2316},"What broke",{"type":29,"tag":232,"props":2318,"children":2319},{},[2320,2379,2397,2441,2465,2503,2550,2590],{"type":29,"tag":212,"props":2321,"children":2322},{},[2323,2328,2333],{"type":29,"tag":239,"props":2324,"children":2325},{},[2326],{"type":38,"value":2327},"0.6.0",{"type":29,"tag":239,"props":2329,"children":2330},{},[2331],{"type":38,"value":2332},"2026-09-03",{"type":29,"tag":239,"props":2334,"children":2335},{},[2336,2338,2343,2345,2350,2351,2356,2357,2362,2364,2369,2371,2377],{"type":38,"value":2337},"The rename; ",{"type":29,"tag":96,"props":2339,"children":2341},{"className":2340},[],[2342],{"type":38,"value":283},{"type":38,"value":2344}," facade, ",{"type":29,"tag":96,"props":2346,"children":2348},{"className":2347},[],[2349],{"type":38,"value":341},{"type":38,"value":83},{"type":29,"tag":96,"props":2352,"children":2354},{"className":2353},[],[2355],{"type":38,"value":404},{"type":38,"value":800},{"type":29,"tag":96,"props":2358,"children":2360},{"className":2359},[],[2361],{"type":38,"value":645},{"type":38,"value":2363}," → ",{"type":29,"tag":96,"props":2365,"children":2367},{"className":2366},[],[2368],{"type":38,"value":624},{"type":38,"value":2370},"; dock split into base and styled halves; ",{"type":29,"tag":96,"props":2372,"children":2374},{"className":2373},[],[2375],{"type":38,"value":2376},"Dialog::new(cx)",{"type":38,"value":2378},"; many fields made private",{"type":29,"tag":212,"props":2380,"children":2381},{},[2382,2387,2392],{"type":29,"tag":239,"props":2383,"children":2384},{},[2385],{"type":38,"value":2386},"0.6.1",{"type":29,"tag":239,"props":2388,"children":2389},{},[2390],{"type":38,"value":2391},"09-09",{"type":29,"tag":239,"props":2393,"children":2394},{},[2395],{"type":38,"value":2396},"Headless UI tests arrive",{"type":29,"tag":212,"props":2398,"children":2399},{},[2400,2405,2410],{"type":29,"tag":239,"props":2401,"children":2402},{},[2403],{"type":38,"value":2404},"0.7.0",{"type":29,"tag":239,"props":2406,"children":2407},{},[2408],{"type":38,"value":2409},"09-28",{"type":29,"tag":239,"props":2411,"children":2412},{},[2413,2418,2420,2426,2428,2433,2434,2439],{"type":29,"tag":96,"props":2414,"children":2416},{"className":2415},[],[2417],{"type":38,"value":776},{"type":38,"value":2419}," moved to Base; ",{"type":29,"tag":96,"props":2421,"children":2423},{"className":2422},[],[2424],{"type":38,"value":2425},"gpui_kit::open_window",{"type":38,"value":2427}," replaces manual ",{"type":29,"tag":96,"props":2429,"children":2431},{"className":2430},[],[2432],{"type":38,"value":776},{"type":38,"value":800},{"type":29,"tag":96,"props":2435,"children":2437},{"className":2436},[],[2438],{"type":38,"value":784},{"type":38,"value":2440},"; Plot renames; versioned docs begin",{"type":29,"tag":212,"props":2442,"children":2443},{},[2444,2449,2454],{"type":29,"tag":239,"props":2445,"children":2446},{},[2447],{"type":38,"value":2448},"0.7.3",{"type":29,"tag":239,"props":2450,"children":2451},{},[2452],{"type":38,"value":2453},"10-12",{"type":29,"tag":239,"props":2455,"children":2456},{},[2457,2459],{"type":38,"value":2458},"Optional GPUI Fast backend; gpui-pre ",{"type":29,"tag":96,"props":2460,"children":2462},{"className":2461},[],[2463],{"type":38,"value":2464},"=0.3.9",{"type":29,"tag":212,"props":2466,"children":2467},{},[2468,2473,2478],{"type":29,"tag":239,"props":2469,"children":2470},{},[2471],{"type":38,"value":2472},"0.8.0",{"type":29,"tag":239,"props":2474,"children":2475},{},[2476],{"type":38,"value":2477},"10-19",{"type":29,"tag":239,"props":2479,"children":2480},{},[2481,2487,2488,2493,2495,2501],{"type":29,"tag":96,"props":2482,"children":2484},{"className":2483},[],[2485],{"type":38,"value":2486},"gpui-wry",{"type":38,"value":2363},{"type":29,"tag":96,"props":2489,"children":2491},{"className":2490},[],[2492],{"type":38,"value":496},{"type":38,"value":2494},"; Linux WebView must start on X11; scroll behaviour changes; ",{"type":29,"tag":96,"props":2496,"children":2498},{"className":2497},[],[2499],{"type":38,"value":2500},"TestWindowExt",{"type":38,"value":2502}," gains required methods",{"type":29,"tag":212,"props":2504,"children":2505},{},[2506,2511,2516],{"type":29,"tag":239,"props":2507,"children":2508},{},[2509],{"type":38,"value":2510},"0.8.1",{"type":29,"tag":239,"props":2512,"children":2513},{},[2514],{"type":38,"value":2515},"10-26",{"type":29,"tag":239,"props":2517,"children":2518},{},[2519,2521,2527,2529,2535,2537,2543,2544],{"type":38,"value":2520},"Upstream breaks passed through: ",{"type":29,"tag":96,"props":2522,"children":2524},{"className":2523},[],[2525],{"type":38,"value":2526},"KeyBinding::new",{"type":38,"value":2528}," needs static strings, ",{"type":29,"tag":96,"props":2530,"children":2532},{"className":2531},[],[2533],{"type":38,"value":2534},"Modifiers::secondary()",{"type":38,"value":2536}," needs ",{"type":29,"tag":96,"props":2538,"children":2540},{"className":2539},[],[2541],{"type":38,"value":2542},"&App",{"type":38,"value":83},{"type":29,"tag":96,"props":2545,"children":2547},{"className":2546},[],[2548],{"type":38,"value":2549},"PlatformInput::Scroll",{"type":29,"tag":212,"props":2551,"children":2552},{},[2553,2558,2563],{"type":29,"tag":239,"props":2554,"children":2555},{},[2556],{"type":38,"value":2557},"0.9.0",{"type":29,"tag":239,"props":2559,"children":2560},{},[2561],{"type":38,"value":2562},"11-02",{"type":29,"tag":239,"props":2564,"children":2565},{},[2566,2568,2573,2574,2580,2582,2588],{"type":38,"value":2567},"Theme structs ",{"type":29,"tag":96,"props":2569,"children":2571},{"className":2570},[],[2572],{"type":38,"value":1342},{"type":38,"value":800},{"type":29,"tag":96,"props":2575,"children":2577},{"className":2576},[],[2578],{"type":38,"value":2579},"Window::text_system()",{"type":38,"value":2581}," returns ",{"type":29,"tag":96,"props":2583,"children":2585},{"className":2584},[],[2586],{"type":38,"value":2587},"&Rc\u003C…>",{"type":38,"value":2589},"; animations read the executor clock",{"type":29,"tag":212,"props":2591,"children":2592},{},[2593,2598,2603],{"type":29,"tag":239,"props":2594,"children":2595},{},[2596],{"type":38,"value":2597},"0.9.1",{"type":29,"tag":239,"props":2599,"children":2600},{},[2601],{"type":38,"value":2602},"11-09",{"type":29,"tag":239,"props":2604,"children":2605},{},[2606,2608,2613,2615,2621],{"type":38,"value":2607},"None; gpui-pre ",{"type":29,"tag":96,"props":2609,"children":2611},{"className":2610},[],[2612],{"type":38,"value":2262},{"type":38,"value":2614},", gpui-fast 0.1.14, a ",{"type":29,"tag":96,"props":2616,"children":2618},{"className":2617},[],[2619],{"type":38,"value":2620},"rustls-webpki",{"type":38,"value":2622}," CVE fix",{"type":29,"tag":30,"props":2624,"children":2625},{},[2626,2628,2634,2635,2641,2643],{"type":38,"value":2627},"Every release note has a \"Breaking changes\" section with migration snippets; docs are versioned (",{"type":29,"tag":96,"props":2629,"children":2631},{"className":2630},[],[2632],{"type":38,"value":2633},"\u002Fversions\u002Fv0.9.0",{"type":38,"value":83},{"type":29,"tag":96,"props":2636,"children":2638},{"className":2637},[],[2639],{"type":38,"value":2640},"\u002Fversions\u002Fmain",{"type":38,"value":2642},") and pages carry maturity labels (Stable, Preview, Experimental, Showcase only). — ",{"type":29,"tag":43,"props":2644,"children":2646},{"href":137,"rel":2645},[79],[2647],{"type":38,"value":137},{"type":29,"tag":30,"props":2649,"children":2650},{},[2651,2653,2659,2661,2667],{"type":38,"value":2652},"For c131: pin ",{"type":29,"tag":96,"props":2654,"children":2656},{"className":2655},[],[2657],{"type":38,"value":2658},"gpui-kit = \"=0.9.1\"",{"type":38,"value":2660},", move on a schedule, version-stamp ",{"type":29,"tag":96,"props":2662,"children":2664},{"className":2663},[],[2665],{"type":38,"value":2666},"PATTERNS.md",{"type":38,"value":2668}," with the kit release, and expect a migration hour per minor.",{"type":29,"tag":60,"props":2670,"children":2672},{"id":2671},"platform-notes-and-gaps",[2673],{"type":38,"value":22},{"type":29,"tag":66,"props":2675,"children":2676},{},[2677,2707,2766,2776],{"type":29,"tag":70,"props":2678,"children":2679},{},[2680,2685,2687,2692,2694,2700,2702],{"type":29,"tag":34,"props":2681,"children":2682},{},[2683],{"type":38,"value":2684},"Requirements:",{"type":38,"value":2686}," macOS ",{"type":29,"tag":34,"props":2688,"children":2689},{},[2690],{"type":38,"value":2691},"15 or later",{"type":38,"value":2693}," plus Xcode Command Line Tools; Windows 10 or later, MSVC toolchain, CMake; Linux verified on Ubuntu 24.04 with Vulkan drivers, Wayland or X11, fontconfig, xkbcommon, ",{"type":29,"tag":96,"props":2695,"children":2697},{"className":2696},[],[2698],{"type":38,"value":2699},"libwebkit2gtk-4.1",{"type":38,"value":2701},"; Rust 1.92 or later. — ",{"type":29,"tag":43,"props":2703,"children":2705},{"href":2289,"rel":2704},[79],[2706],{"type":38,"value":2289},{"type":29,"tag":70,"props":2708,"children":2709},{},[2710,2715,2717,2723,2725,2731,2733,2739,2741,2745,2747,2753,2754,2760,2761],{"type":29,"tag":34,"props":2711,"children":2712},{},[2713],{"type":38,"value":2714},"Not in the kit:",{"type":38,"value":2716}," a tray or status item (no occurrence of \"tray\" in the docs; none in GPUI either); auto-update (\"Your application and its distribution system own the update policy\"; a guide shows ",{"type":29,"tag":96,"props":2718,"children":2720},{"className":2719},[],[2721],{"type":38,"value":2722},"self_update",{"type":38,"value":2724},"); installers (\"",{"type":29,"tag":96,"props":2726,"children":2728},{"className":2727},[],[2729],{"type":38,"value":2730},"cargo build --release",{"type":38,"value":2732}," produces an executable, not an installer\"). Notifications exist through GPUI but on macOS need a real ",{"type":29,"tag":96,"props":2734,"children":2736},{"className":2735},[],[2737],{"type":38,"value":2738},".app",{"type":38,"value":2740}," bundle and on Linux a D-Bus notification daemon. All of these are ",{"type":29,"tag":43,"props":2742,"children":2743},{"href":53},[2744],{"type":38,"value":56},{"type":38,"value":2746},"'s subject. — ",{"type":29,"tag":43,"props":2748,"children":2751},{"href":2749,"rel":2750},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Fauto-update",[79],[2752],{"type":38,"value":2749},{"type":38,"value":83},{"type":29,"tag":43,"props":2755,"children":2758},{"href":2756,"rel":2757},"https:\u002F\u002Fgpui-kit.com\u002Fdocs\u002Fpackaging",[79],[2759],{"type":38,"value":2756},{"type":38,"value":83},{"type":29,"tag":43,"props":2762,"children":2764},{"href":822,"rel":2763},[79],[2765],{"type":38,"value":822},{"type":29,"tag":70,"props":2767,"children":2768},{},[2769,2771],{"type":38,"value":2770},"Hello World release binary: \"~12 MB\" by the kit's own estimate. — ",{"type":29,"tag":43,"props":2772,"children":2774},{"href":2108,"rel":2773},[79],[2775],{"type":38,"value":2108},{"type":29,"tag":70,"props":2777,"children":2778},{},[2779],{"type":38,"value":2780},"Linux: client-side decorations, a GPUI-drawn menu fallback, WebView on X11 only.",{"type":29,"tag":60,"props":2782,"children":2784},{"id":2783},"open-questions",[2785],{"type":38,"value":23},{"type":29,"tag":2787,"props":2788,"children":2789},"ol",{},[2790,2802,2815,2820],{"type":29,"tag":70,"props":2791,"children":2792},{},[2793,2795,2800],{"type":38,"value":2794},"Does any kit app follow the OS light\u002Fdark appearance by default, or must every app wire ",{"type":29,"tag":96,"props":2796,"children":2798},{"className":2797},[],[2799],{"type":38,"value":1326},{"type":38,"value":2801},"? The code suggests the latter.",{"type":29,"tag":70,"props":2803,"children":2804},{},[2805,2807,2813],{"type":38,"value":2806},"Does a kit app build for wasm on stable with ",{"type":29,"tag":96,"props":2808,"children":2810},{"className":2809},[],[2811],{"type":38,"value":2812},"single_threaded_web()",{"type":38,"value":2814},"?",{"type":29,"tag":70,"props":2816,"children":2817},{},[2818],{"type":38,"value":2819},"What does Longbridge Pro ship with: upstream GPUI or GPUI Fast?",{"type":29,"tag":70,"props":2821,"children":2822},{},[2823],{"type":38,"value":2824},"Is the \"~12 MB\" hello binary right for 0.9.1 on each OS? The spike measures.",{"type":29,"tag":60,"props":2826,"children":2828},{"id":2827},"sources",[2829],{"type":38,"value":24},{"type":29,"tag":30,"props":2831,"children":2832},{},[2833,2838,2840,2845,2847,2853,2855,2860,2861,2867,2868,2873,2874,2879,2880,2885,2886,2891,2892,2897,2899,2905,2906,2911,2912,2918,2919,2924,2925],{"type":29,"tag":43,"props":2834,"children":2836},{"href":77,"rel":2835},[79],[2837],{"type":38,"value":77},{"type":38,"value":2839}," · ",{"type":29,"tag":43,"props":2841,"children":2843},{"href":177,"rel":2842},[79],[2844],{"type":38,"value":177},{"type":38,"value":2846}," (getting-started, installation, test, accessibility, webassembly, coding-guides, design-guides, fonts, comparison, webview, auto-update, packaging, system-notification, native-extension) · ",{"type":29,"tag":43,"props":2848,"children":2851},{"href":2849,"rel":2850},"https:\u002F\u002Fgpui-kit.com\u002Fcomponent",[79],[2852],{"type":38,"value":2849},{"type":38,"value":2854}," (root, theme, title-bar, data-table, dock, chart, editor) · ",{"type":29,"tag":43,"props":2856,"children":2858},{"href":199,"rel":2857},[79],[2859],{"type":38,"value":199},{"type":38,"value":2839},{"type":29,"tag":43,"props":2862,"children":2865},{"href":2863,"rel":2864},"https:\u002F\u002Fgpui-kit.com\u002Fshell",[79],[2866],{"type":38,"value":2863},{"type":38,"value":2839},{"type":29,"tag":43,"props":2869,"children":2871},{"href":137,"rel":2870},[79],[2872],{"type":38,"value":137},{"type":38,"value":2839},{"type":29,"tag":43,"props":2875,"children":2877},{"href":166,"rel":2876},[79],[2878],{"type":38,"value":166},{"type":38,"value":2839},{"type":29,"tag":43,"props":2881,"children":2883},{"href":2203,"rel":2882},[79],[2884],{"type":38,"value":2203},{"type":38,"value":2839},{"type":29,"tag":43,"props":2887,"children":2889},{"href":937,"rel":2888},[79],[2890],{"type":38,"value":937},{"type":38,"value":2839},{"type":29,"tag":43,"props":2893,"children":2895},{"href":155,"rel":2894},[79],[2896],{"type":38,"value":155},{"type":38,"value":2898}," (Cargo.toml, crates\u002Fkit\u002FCargo.toml, docs\u002FARCHITECTURE.md, .theme-schema.json, crates\u002Fcomponent\u002Fsrc\u002Ftheme\u002F*, crates\u002Fbase\u002Fsrc\u002Ftheme_tokens.rs, .github\u002Fworkflows\u002Fci.yml, themes\u002F) · ",{"type":29,"tag":43,"props":2900,"children":2903},{"href":2901,"rel":2902},"https:\u002F\u002Fapi.github.com\u002Frepos\u002Flongbridge\u002Fgpui-kit\u002Freleases",[79],[2904],{"type":38,"value":2901},{"type":38,"value":2839},{"type":29,"tag":43,"props":2907,"children":2909},{"href":144,"rel":2908},[79],[2910],{"type":38,"value":144},{"type":38,"value":2839},{"type":29,"tag":43,"props":2913,"children":2916},{"href":2914,"rel":2915},"https:\u002F\u002Fcrates.io\u002Fapi\u002Fv1\u002Fcrates\u002Fgpui-pre",[79],[2917],{"type":38,"value":2914},{"type":38,"value":2839},{"type":29,"tag":43,"props":2920,"children":2922},{"href":86,"rel":2921},[79],[2923],{"type":38,"value":86},{"type":38,"value":2839},{"type":29,"tag":43,"props":2926,"children":2928},{"href":2115,"rel":2927},[79],[2929],{"type":38,"value":2115},{"type":29,"tag":2931,"props":2932,"children":2933},"style",{},[2934],{"type":38,"value":1724},1794599292053]