[{"data":1,"prerenderedAt":1044},["ShallowReactive",2],{"cycle-doc-design-c130-research\u002FREADME.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":18},{"id":5,"title":6},"c130","Native App (program)",{"id":8,"label":9},"design","Design","research\u002FREADME.md","c130 primer: the native app on GPUI Kit",[13,14,15,16,17],"The eight files","One page for the session","What surprised us","Open questions for Tyler's session","How to read the sources",{"type":19,"children":20},"root",[21,69,75,316,321,558,563,859,864,869,877,931,939,1012,1020,1034,1039],{"type":22,"tag":23,"props":24,"children":25},"element","p",{},[26,33,35,42,44,51,53,59,61,67],{"type":22,"tag":27,"props":28,"children":29},"strong",{},[30],{"type":31,"value":32},"text","Use this file to",{"type":31,"value":34}," walk into Tyler's requirements session (gate G2) with the ground covered: what each of the eight files answers, the one-page summary, what surprised us, and the questions the reading could not close. Written 2026-11-09 from web sources only, every fact with its URL and the date read; nothing was built here. The c131 spike in ",{"type":22,"tag":36,"props":37,"children":39},"code",{"className":38},[],[40],{"type":31,"value":41},"..\u002Fqnative",{"type":31,"value":43}," adds measured numbers to ",{"type":22,"tag":45,"props":46,"children":48},"a",{"href":47},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fplatform",[49],{"type":31,"value":50},"platform.md",{"type":31,"value":52}," under \"From the spike\". Rulings referenced as D1–D10 are in ",{"type":22,"tag":36,"props":54,"children":56},{"className":55},[],[57],{"type":31,"value":58},"..\u002Fplan.md",{"type":31,"value":60},"; c131 D14 (Inter, bundled) in ",{"type":22,"tag":36,"props":62,"children":64},{"className":63},[],[65],{"type":31,"value":66},"..\u002F..\u002Fc131.native-app-v1\u002Fplan.md",{"type":31,"value":68},".",{"type":22,"tag":70,"props":71,"children":73},"h2",{"id":72},"the-eight-files",[74],{"type":31,"value":13},{"type":22,"tag":76,"props":77,"children":78},"table",{},[79,103],{"type":22,"tag":80,"props":81,"children":82},"thead",{},[83],{"type":22,"tag":84,"props":85,"children":86},"tr",{},[87,93,98],{"type":22,"tag":88,"props":89,"children":90},"th",{},[91],{"type":31,"value":92},"File",{"type":22,"tag":88,"props":94,"children":95},{},[96],{"type":31,"value":97},"Read it to",{"type":22,"tag":88,"props":99,"children":100},{},[101],{"type":31,"value":102},"It answers",{"type":22,"tag":104,"props":105,"children":106},"tbody",{},[107,130,152,174,194,224,246,268,298],{"type":22,"tag":84,"props":108,"children":109},{},[110,120,125],{"type":22,"tag":111,"props":112,"children":113},"td",{},[114],{"type":22,"tag":45,"props":115,"children":117},{"href":116},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fgpui",[118],{"type":31,"value":119},"gpui.md",{"type":22,"tag":111,"props":121,"children":122},{},[123],{"type":31,"value":124},"understand the engine under the kit: entities, views, elements, the GPU renderer, what each OS gives the app",{"type":22,"tag":111,"props":126,"children":127},{},[128],{"type":31,"value":129},"what \"native\" means for our screens (D2), and that there are two GPUI version lines",{"type":22,"tag":84,"props":131,"children":132},{},[133,142,147],{"type":22,"tag":111,"props":134,"children":135},{},[136],{"type":22,"tag":45,"props":137,"children":139},{"href":138},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fgpui-kit",[140],{"type":31,"value":141},"gpui-kit.md",{"type":22,"tag":111,"props":143,"children":144},{},[145],{"type":31,"value":146},"learn the kit we build on: layers, components our pages need, theming by semantic tokens, the app skeleton, headless tests, AccessKit, wasm, version churn",{"type":22,"tag":111,"props":148,"children":149},{},[150],{"type":31,"value":151},"D5 (tokens-only brand), the test rule, what the kit leaves out",{"type":22,"tag":84,"props":153,"children":154},{},[155,164,169],{"type":22,"tag":111,"props":156,"children":157},{},[158],{"type":22,"tag":45,"props":159,"children":161},{"href":160},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fnative-shell",[162],{"type":31,"value":163},"native-shell.md",{"type":22,"tag":111,"props":165,"children":166},{},[167],{"type":31,"value":168},"know what Native Shell is and when it would beat the kit",{"type":22,"tag":111,"props":170,"children":171},{},[172],{"type":31,"value":173},"D2 holds; where nsh could still enter (embedded modules); c132 medium E is weak",{"type":22,"tag":84,"props":175,"children":176},{},[177,184,189],{"type":22,"tag":111,"props":178,"children":179},{},[180],{"type":22,"tag":45,"props":181,"children":182},{"href":47},[183],{"type":31,"value":50},{"type":22,"tag":111,"props":185,"children":186},{},[187],{"type":31,"value":188},"plan the OS work neither GPUI nor the kit does: tray, notifications, menus, packaging and signing, auto-update, login items, single instance, deep links, fonts, OS floors, measuring",{"type":22,"tag":111,"props":190,"children":191},{},[192],{"type":31,"value":193},"Tyler's Q4, Q5, Q7, Q9 as far as reading can; the c131 D14 fonts path; the spike's test list",{"type":22,"tag":84,"props":195,"children":196},{},[197,206,211],{"type":22,"tag":111,"props":198,"children":199},{},[200],{"type":22,"tag":45,"props":201,"children":203},{"href":202},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fagent-tooling",[204],{"type":31,"value":205},"agent-tooling.md",{"type":22,"tag":111,"props":207,"children":208},{},[209],{"type":31,"value":210},"set Claude Code up for c131 and c132: skills, machine-readable docs, MCP servers, demo apps, videos, strobe",{"type":22,"tag":111,"props":212,"children":213},{},[214,216,222],{"type":31,"value":215},"what to install into ",{"type":22,"tag":36,"props":217,"children":219},{"className":218},[],[220],{"type":31,"value":221},".claude\u002Fskills",{"type":31,"value":223},", and what not to",{"type":22,"tag":84,"props":225,"children":226},{},[227,236,241],{"type":22,"tag":111,"props":228,"children":229},{},[230],{"type":22,"tag":45,"props":231,"children":233},{"href":232},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fclaims",[234],{"type":31,"value":235},"claims.md",{"type":22,"tag":111,"props":237,"children":238},{},[239],{"type":31,"value":240},"answer the things people have heard: \"Electron killer\", Discord, Spotify, memory figures, \"GPUI is 1.0\", \"Zed stopped GPUI\"",{"type":22,"tag":111,"props":242,"children":243},{},[244],{"type":31,"value":245},"verdicts with sources; claims to retire in our own documents",{"type":22,"tag":84,"props":247,"children":248},{},[249,258,263],{"type":22,"tag":111,"props":250,"children":251},{},[252],{"type":22,"tag":45,"props":253,"children":255},{"href":254},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Fcomparison",[256],{"type":31,"value":257},"comparison.md",{"type":22,"tag":111,"props":259,"children":260},{},[261],{"type":31,"value":262},"weigh GPUI Kit against Native Shell, Tauri, Electron and keeping the web UI; and the four qmap options for D8",{"type":22,"tag":111,"props":264,"children":265},{},[266],{"type":31,"value":267},"the criteria table (memory, CPU, binary, tray, agent fluency, accessibility, brand reach, time to V1)",{"type":22,"tag":84,"props":269,"children":270},{},[271,282,293],{"type":22,"tag":111,"props":272,"children":273},{},[274,280],{"type":22,"tag":45,"props":275,"children":277},{"href":276},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fresearch\u002Frune",[278],{"type":31,"value":279},"rune.md",{"type":31,"value":281}," (added 2026-11-11)",{"type":22,"tag":111,"props":283,"children":284},{},[285,287],{"type":31,"value":286},"weigh Rune, a 20-day-old GPU UI framework from Anomaly, against staying on GPUI Kit; shared as ",{"type":22,"tag":45,"props":288,"children":290},{"href":289},"\u002Fcycles\u002Fdesign\u002Fc130\u002Frune",[291],{"type":31,"value":292},"Rune or GPUI?",{"type":22,"tag":111,"props":294,"children":295},{},[296],{"type":31,"value":297},"stay on GPUI Kit for V1; GPUI isn't restricting the look; watch Rune for its tooling and motion",{"type":22,"tag":84,"props":299,"children":300},{},[301,306,311],{"type":22,"tag":111,"props":302,"children":303},{},[304],{"type":31,"value":305},"this file",{"type":22,"tag":111,"props":307,"children":308},{},[309],{"type":31,"value":310},"the summary, the surprises, the open questions",{"type":22,"tag":111,"props":312,"children":313},{},[314],{"type":31,"value":315},"the session's agenda",{"type":22,"tag":70,"props":317,"children":319},{"id":318},"one-page-for-the-session",[320],{"type":31,"value":14},{"type":22,"tag":322,"props":323,"children":324},"ul",{},[325,352,362,411,453,471,481,499,548],{"type":22,"tag":326,"props":327,"children":328},"li",{},[329,334,336,342,344,350],{"type":22,"tag":27,"props":330,"children":331},{},[332],{"type":31,"value":333},"What we build on.",{"type":31,"value":335}," GPUI is Zed's hybrid immediate\u002Fretained, GPU-rendered UI framework: Metal on macOS, Direct3D 11 on Windows, wgpu Vulkan on Linux since 2026-02. GPUI Kit (Longbridge, Apache-2.0, 20,095 stars) adds the styled components, theming, overlays and headless tests; version 0.9.1 was published the morning of this reading, on a weekly cadence, and it pins Longbridge's ",{"type":22,"tag":36,"props":337,"children":339},{"className":338},[],[340],{"type":31,"value":341},"gpui-pre",{"type":31,"value":343}," snapshots because Zed's crates.io ",{"type":22,"tag":36,"props":345,"children":347},{"className":346},[],[348],{"type":31,"value":349},"gpui",{"type":31,"value":351}," stopped at 0.2.2 in October 2025.",{"type":22,"tag":326,"props":353,"children":354},{},[355,360],{"type":22,"tag":27,"props":356,"children":357},{},[358],{"type":31,"value":359},"What \"native\" means (D2).",{"type":31,"value":361}," The app is one Rust process drawing every pixel on the GPU. The OS supplies windows, input, text shaping, menus, notifications, the keychain and URL schemes; it supplies no controls. The gain is one process, no Chromium, a small binary and one codebase on three OSes. The price is accessibility: AccessKit is wired since 2026-05-27 and off by default in Zed, and no screen-reader run of any GPUI app is on record.",{"type":22,"tag":326,"props":363,"children":364},{},[365,370,372,378,380,386,388,394,396,402,404,410],{"type":22,"tag":27,"props":366,"children":367},{},[368],{"type":31,"value":369},"The kit covers our five pages.",{"type":31,"value":371}," Sidebar, DataTable, Tabs, Form, Notification, Chart, Empty, Dialog and Sheet exist; 134 theme roles are set from JSON; Inter and Geist Mono are bundled with one ",{"type":22,"tag":36,"props":373,"children":375},{"className":374},[],[376],{"type":31,"value":377},"add_fonts",{"type":31,"value":379}," call and the theme's ",{"type":22,"tag":36,"props":381,"children":383},{"className":382},[],[384],{"type":31,"value":385},"font.family",{"type":31,"value":387}," and ",{"type":22,"tag":36,"props":389,"children":391},{"className":390},[],[392],{"type":31,"value":393},"mono_font.family",{"type":31,"value":395}," (c131 D14). Light and dark follow ",{"type":22,"tag":36,"props":397,"children":399},{"className":398},[],[400],{"type":31,"value":401},"sync_system_appearance",{"type":31,"value":403},"; zoom is ",{"type":22,"tag":36,"props":405,"children":407},{"className":406},[],[408],{"type":31,"value":409},"set_rem_size",{"type":31,"value":68},{"type":22,"tag":326,"props":412,"children":413},{},[414,419,421,427,429,435,437,443,445,451],{"type":22,"tag":27,"props":415,"children":416},{},[417],{"type":31,"value":418},"What neither does.",{"type":31,"value":420}," No tray, no auto-update, no installers, no login item, no single-instance lock, no deep-link registration beyond ",{"type":22,"tag":36,"props":422,"children":424},{"className":423},[],[425],{"type":31,"value":426},"register_url_scheme",{"type":31,"value":428}," on macOS. Each is a crate or our own code, listed in platform.md with its OS rules; ",{"type":22,"tag":36,"props":430,"children":432},{"className":431},[],[433],{"type":31,"value":434},"qupdate",{"type":31,"value":436}," ports with bundle-awareness added, ",{"type":22,"tag":36,"props":438,"children":440},{"className":439},[],[441],{"type":31,"value":442},"qtray",{"type":31,"value":444},"'s model and menus port but its ",{"type":22,"tag":36,"props":446,"children":448},{"className":447},[],[449],{"type":31,"value":450},"tao",{"type":31,"value":452}," loop does not run inside GPUI. The tray is the D7 question: GPUI has no tray API and Zed closed two PRs for one, including the kit author's.",{"type":22,"tag":326,"props":454,"children":455},{},[456,461,463,469],{"type":22,"tag":27,"props":457,"children":458},{},[459],{"type":31,"value":460},"The footprint.",{"type":31,"value":462}," No published idle number exists for a kit app. Longbridge's own bench: a gpui-kit 0.8 app peaked at 72.7 MB on Windows with a 13.7-second cold start (shader compile). Zed idles at 142 to 222 MB in review-site tests with no method; Discord's early GPUI build showed about 290 MB. Our number comes from the spike, measured with strobe (",{"type":22,"tag":36,"props":464,"children":466},{"className":465},[],[467],{"type":31,"value":468},"record exe:\u003Cpath> --native --windowless",{"type":31,"value":470},").",{"type":22,"tag":326,"props":472,"children":473},{},[474,479],{"type":22,"tag":27,"props":475,"children":476},{},[477],{"type":31,"value":478},"The comparison.",{"type":31,"value":480}," Against Tauri and Electron the kit wins on memory, CPU, binary size and single-process simplicity, and loses on accessibility and on tray, updater and installers out of the box, which Tauri ships as plugins. Keeping the web UI wins on brand reach and time to V1 and loses the roadmap's premise. For qmap (D8): a link out costs nothing; a webview embed costs a WebKit or WebView2 process beside ours; a native redraw is a cycle of its own; an opt-in local web app is the middle path.",{"type":22,"tag":326,"props":482,"children":483},{},[484,489,491,497],{"type":22,"tag":27,"props":485,"children":486},{},[487],{"type":31,"value":488},"Native Shell.",{"type":31,"value":490}," TSX over a Rust core with native views per platform; v0.4.0 after four breaking minors in 18 days; tray, notifications and updater exist only on unreleased ",{"type":22,"tag":36,"props":492,"children":494},{"className":493},[],[495],{"type":31,"value":496},"main",{"type":31,"value":498},". Not our shell; a possible module host later; a reading list for our own platform work.",{"type":22,"tag":326,"props":500,"children":501},{},[502,507,509,515,517,523,525,531,533,539,541,546],{"type":22,"tag":27,"props":503,"children":504},{},[505],{"type":31,"value":506},"Agents.",{"type":31,"value":508}," Two official skills (",{"type":22,"tag":36,"props":510,"children":512},{"className":511},[],[513],{"type":31,"value":514},"npx skills add longbridge\u002Fgpui-kit",{"type":31,"value":516},"), both saying \"read the guide file itself\"; ",{"type":22,"tag":36,"props":518,"children":520},{"className":519},[],[521],{"type":31,"value":522},"\u002Fllms.txt",{"type":31,"value":524}," as the index and pages as ",{"type":22,"tag":36,"props":526,"children":528},{"className":527},[],[529],{"type":31,"value":530},".md",{"type":31,"value":532},"; Context7 indexes the kit; ",{"type":22,"tag":36,"props":534,"children":536},{"className":535},[],[537],{"type":31,"value":538},"gpui-mcp",{"type":31,"value":540}," exists but pins an older ",{"type":22,"tag":36,"props":542,"children":544},{"className":543},[],[545],{"type":31,"value":341},{"type":31,"value":547},"; strobe installs its skill and MCP for opencode, so Claude Code gets them by hand.",{"type":22,"tag":326,"props":549,"children":550},{},[551,556],{"type":22,"tag":27,"props":552,"children":553},{},[554],{"type":31,"value":555},"The claims.",{"type":31,"value":557}," Discord's move to GPUI is real and five days old, announced, not shipped. Spotify did not. \"Electron killer\" is a blog headline with uncited numbers. GPUI is pre-1.0 (Zed the editor is 1.27). Zed \"braked\" GPUI for outsiders in February and the framework still moves weekly for Zed's needs; the kit's pin is how everyone lives with that.",{"type":22,"tag":70,"props":559,"children":561},{"id":560},"what-surprised-us",[562],{"type":31,"value":15},{"type":22,"tag":76,"props":564,"children":565},{},[566,585],{"type":22,"tag":80,"props":567,"children":568},{},[569],{"type":22,"tag":84,"props":570,"children":571},{},[572,575,580],{"type":22,"tag":88,"props":573,"children":574},{},[],{"type":22,"tag":88,"props":576,"children":577},{},[578],{"type":31,"value":579},"Surprise",{"type":22,"tag":88,"props":581,"children":582},{},[583],{"type":31,"value":584},"Consequence",{"type":22,"tag":104,"props":586,"children":587},{},[588,606,651,675,693,711,729,747,772,797,815,841],{"type":22,"tag":84,"props":589,"children":590},{},[591,596,601],{"type":22,"tag":111,"props":592,"children":593},{},[594],{"type":31,"value":595},"1",{"type":22,"tag":111,"props":597,"children":598},{},[599],{"type":31,"value":600},"GPUI Kit 0.9.1 was published hours before we read it; releases are weekly; the project was renamed nine weeks ago",{"type":22,"tag":111,"props":602,"children":603},{},[604],{"type":31,"value":605},"Pin exactly; budget a weekly bump; expect docs and skill text to lag",{"type":22,"tag":84,"props":607,"children":608},{},[609,614,633],{"type":22,"tag":111,"props":610,"children":611},{},[612],{"type":31,"value":613},"2",{"type":22,"tag":111,"props":615,"children":616},{},[617,619,624,626,631],{"type":31,"value":618},"The kit does not use crates.io ",{"type":22,"tag":36,"props":620,"children":622},{"className":621},[],[623],{"type":31,"value":349},{"type":31,"value":625}," (frozen at 0.2.2) but Longbridge's ",{"type":22,"tag":36,"props":627,"children":629},{"className":628},[],[630],{"type":31,"value":341},{"type":31,"value":632}," snapshots",{"type":22,"tag":111,"props":634,"children":635},{},[636,642,644,649],{"type":22,"tag":36,"props":637,"children":639},{"className":638},[],[640],{"type":31,"value":641},"docs.rs\u002Fgpui-pre",{"type":31,"value":643}," is our reference; third-party crates built on ",{"type":22,"tag":36,"props":645,"children":647},{"className":646},[],[648],{"type":31,"value":349},{"type":31,"value":650}," need patching",{"type":22,"tag":84,"props":652,"children":653},{},[654,659,670],{"type":22,"tag":111,"props":655,"children":656},{},[657],{"type":31,"value":658},"3",{"type":22,"tag":111,"props":660,"children":661},{},[662,664],{"type":31,"value":663},"The docs describe five layers, not the three in ",{"type":22,"tag":36,"props":665,"children":667},{"className":666},[],[668],{"type":31,"value":669},"plan.md",{"type":22,"tag":111,"props":671,"children":672},{},[673],{"type":31,"value":674},"Vocabulary fix in the shape",{"type":22,"tag":84,"props":676,"children":677},{},[678,683,688],{"type":22,"tag":111,"props":679,"children":680},{},[681],{"type":31,"value":682},"4",{"type":22,"tag":111,"props":684,"children":685},{},[686],{"type":31,"value":687},"GPUI has no tray API, and Zed refused one twice; every tray integration found bridges a native callback into GPUI through a channel",{"type":22,"tag":111,"props":689,"children":690},{},[691],{"type":31,"value":692},"D7 is a spike question before it is a design question",{"type":22,"tag":84,"props":694,"children":695},{},[696,701,706],{"type":22,"tag":111,"props":697,"children":698},{},[699],{"type":31,"value":700},"5",{"type":22,"tag":111,"props":702,"children":703},{},[704],{"type":31,"value":705},"AccessKit is in, off by default in Zed, and unproven with a screen reader",{"type":22,"tag":111,"props":707,"children":708},{},[709],{"type":31,"value":710},"V1 states its accessibility stance in words",{"type":22,"tag":84,"props":712,"children":713},{},[714,719,724],{"type":22,"tag":111,"props":715,"children":716},{},[717],{"type":31,"value":718},"6",{"type":22,"tag":111,"props":720,"children":721},{},[722],{"type":31,"value":723},"The kit's wasm build is \"Showcase only\" on nightly",{"type":22,"tag":111,"props":725,"children":726},{},[727],{"type":31,"value":728},"c132 medium B (kit in the browser) is weak",{"type":22,"tag":84,"props":730,"children":731},{},[732,737,742],{"type":22,"tag":111,"props":733,"children":734},{},[735],{"type":31,"value":736},"7",{"type":22,"tag":111,"props":738,"children":739},{},[740],{"type":31,"value":741},"The kit's requirements page says macOS 15 or later; Zed's runtime floor is 12",{"type":22,"tag":111,"props":743,"children":744},{},[745],{"type":31,"value":746},"Q9: which floor we promise",{"type":22,"tag":84,"props":748,"children":749},{},[750,755,767],{"type":22,"tag":111,"props":751,"children":752},{},[753],{"type":31,"value":754},"8",{"type":22,"tag":111,"props":756,"children":757},{},[758,760,765],{"type":31,"value":759},"Native Shell's desktop features exist only on ",{"type":22,"tag":36,"props":761,"children":763},{"className":762},[],[764],{"type":31,"value":496},{"type":31,"value":766},"; four breaking minors in 18 days",{"type":22,"tag":111,"props":768,"children":769},{},[770],{"type":31,"value":771},"Watch, do not build on it",{"type":22,"tag":84,"props":773,"children":774},{},[775,780,785],{"type":22,"tag":111,"props":776,"children":777},{},[778],{"type":31,"value":779},"9",{"type":22,"tag":111,"props":781,"children":782},{},[783],{"type":31,"value":784},"strobe has git tags and npm packages but no GitHub release, shipped three npm versions in one day, and registers its skill and MCP with opencode",{"type":22,"tag":111,"props":786,"children":787},{},[788,790,795],{"type":31,"value":789},"Pin the npm version; copy the skill into ",{"type":22,"tag":36,"props":791,"children":793},{"className":792},[],[794],{"type":31,"value":221},{"type":31,"value":796}," ourselves",{"type":22,"tag":84,"props":798,"children":799},{},[800,805,810],{"type":22,"tag":111,"props":801,"children":802},{},[803],{"type":31,"value":804},"10",{"type":22,"tag":111,"props":806,"children":807},{},[808],{"type":31,"value":809},"Discord announced a GPUI desktop client on 2026-11-04",{"type":22,"tag":111,"props":811,"children":812},{},[813],{"type":31,"value":814},"The framework has a second large production user coming; also more eyes on its gaps",{"type":22,"tag":84,"props":816,"children":817},{},[818,823,836],{"type":22,"tag":111,"props":819,"children":820},{},[821],{"type":31,"value":822},"11",{"type":22,"tag":111,"props":824,"children":825},{},[826,828,834],{"type":31,"value":827},"The kit's ",{"type":22,"tag":36,"props":829,"children":831},{"className":830},[],[832],{"type":31,"value":833},"\u002Fskills",{"type":31,"value":835}," page renders empty; the skills live in the repo; skills.sh lists 19 entries of which the repo now ships 2",{"type":22,"tag":111,"props":837,"children":838},{},[839],{"type":31,"value":840},"Install from the repo at our pinned tag",{"type":22,"tag":84,"props":842,"children":843},{},[844,849,854],{"type":22,"tag":111,"props":845,"children":846},{},[847],{"type":31,"value":848},"12",{"type":22,"tag":111,"props":850,"children":851},{},[852],{"type":31,"value":853},"Inter's variable file carries the family name \"Inter Variable\", not \"Inter\"",{"type":22,"tag":111,"props":855,"children":856},{},[857],{"type":31,"value":858},"The theme JSON must name the family as the file does; the spike checks the load on three OSes",{"type":22,"tag":70,"props":860,"children":862},{"id":861},"open-questions-for-tylers-session",[863],{"type":31,"value":16},{"type":22,"tag":23,"props":865,"children":866},{},[867],{"type":31,"value":868},"The primer could not close these by reading. Owners are suggestions.",{"type":22,"tag":23,"props":870,"children":871},{},[872],{"type":22,"tag":27,"props":873,"children":874},{},[875],{"type":31,"value":876},"Product (Tyler, Mark)",{"type":22,"tag":878,"props":879,"children":880},"ol",{},[881,886,891,896,908,913,926],{"type":22,"tag":326,"props":882,"children":883},{},[884],{"type":31,"value":885},"Q9: the macOS floor to promise, 12 (Zed) or 15 (the kit's page); DirectX 11 and Vulkan 1.3 as stated hardware requirements; what the app shows when the GPU is unavailable (a tray and a plain message, or nothing).",{"type":22,"tag":326,"props":887,"children":888},{},[889],{"type":31,"value":890},"Q4: the tray on Windows and Linux in V1 or later; and the stance when a Linux desktop has no tray host (stock GNOME).",{"type":22,"tag":326,"props":892,"children":893},{},[894],{"type":31,"value":895},"Q5: notifications in or out of V1; if in, they need an installed and signed bundle on macOS and Windows.",{"type":22,"tag":326,"props":897,"children":898},{},[899,901,906],{"type":31,"value":900},"Q7: who holds the Apple Developer ID and the Windows signing account (Azure Artifact Signing at about $10 a month against an OV certificate at $150 to $300 with HSM); per-user Windows install as the default; which Linux formats; whether ",{"type":22,"tag":36,"props":902,"children":904},{"className":903},[],[905],{"type":31,"value":434},{"type":31,"value":907}," grows bundle-awareness or the app gets its own updater.",{"type":22,"tag":326,"props":909,"children":910},{},[911],{"type":31,"value":912},"The accessibility stance for V1, stated in words, given no GPUI app has a screen-reader run on record.",{"type":22,"tag":326,"props":914,"children":915},{},[916,918,924],{"type":31,"value":917},"The deep-link scheme name and the connect flow (",{"type":22,"tag":36,"props":919,"children":921},{"className":920},[],[922],{"type":31,"value":923},"qpoint:\u002F\u002Fconnect?...",{"type":31,"value":925}," against loopback OAuth with PKCE).",{"type":22,"tag":326,"props":927,"children":928},{},[929],{"type":31,"value":930},"D8 confirmed with its cost table in view: link out in V1; whether the opt-in local web app is the V2 path.",{"type":22,"tag":23,"props":932,"children":933},{},[934],{"type":22,"tag":27,"props":935,"children":936},{},[937],{"type":31,"value":938},"Engineering (the c131 spike)",{"type":22,"tag":878,"props":940,"children":942},{"start":941},8,[943,977,982,995,1007],{"type":22,"tag":326,"props":944,"children":945},{},[946,948,954,956,962,963,969,971,976],{"type":31,"value":947},"Tray path B then A on macOS inside GPUI's loop; whether ",{"type":22,"tag":36,"props":949,"children":951},{"className":950},[],[952],{"type":31,"value":953},"QuitMode::Explicit",{"type":31,"value":955},", ",{"type":22,"tag":36,"props":957,"children":959},{"className":958},[],[960],{"type":31,"value":961},"ActivationPolicy::Accessory",{"type":31,"value":387},{"type":22,"tag":36,"props":964,"children":966},{"className":965},[],[967],{"type":31,"value":968},"on_reopen",{"type":31,"value":970}," exist in the pinned ",{"type":22,"tag":36,"props":972,"children":974},{"className":973},[],[975],{"type":31,"value":341},{"type":31,"value":68},{"type":22,"tag":326,"props":978,"children":979},{},[980],{"type":31,"value":981},"Idle memory, CPU and wakes with strobe for a hello app with a table bound to the fixture world; startup time (Longbridge saw 13.7 s cold on Windows); binary size per OS.",{"type":22,"tag":326,"props":983,"children":984},{},[985,987,993],{"type":31,"value":986},"Whether ",{"type":22,"tag":36,"props":988,"children":990},{"className":989},[],[991],{"type":31,"value":992},"gpui-tray",{"type":31,"value":994}," builds against gpui-kit 0.9.x; Windows toasts from an unpackaged app on current Windows 11; whether an in-place macOS update keeps TCC permissions; whether the sensor sees loopback OAuth traffic.",{"type":22,"tag":326,"props":996,"children":997},{},[998,1000,1006],{"type":31,"value":999},"Whether any kit app follows the OS light\u002Fdark appearance without wiring ",{"type":22,"tag":36,"props":1001,"children":1003},{"className":1002},[],[1004],{"type":31,"value":1005},"observe_window_appearance",{"type":31,"value":68},{"type":22,"tag":326,"props":1008,"children":1009},{},[1010],{"type":31,"value":1011},"Whether Longbridge Pro ships on upstream GPUI or GPUI Fast.",{"type":22,"tag":23,"props":1013,"children":1014},{},[1015],{"type":22,"tag":27,"props":1016,"children":1017},{},[1018],{"type":31,"value":1019},"Design (c132)",{"type":22,"tag":878,"props":1021,"children":1023},{"start":1022},13,[1024,1029],{"type":22,"tag":326,"props":1025,"children":1026},{},[1027],{"type":31,"value":1028},"The medium, given that the kit has no browser renderer beyond a nightly showcase: captured states from the real app, or Figma, or both; and whether the kit's design-guides skill is the brief every mock is held to.",{"type":22,"tag":326,"props":1030,"children":1031},{},[1032],{"type":31,"value":1033},"How the brand's tokens map onto the kit's 134 roles when the brand has one accent (Grape) and the kit's set is shadcn-shaped (gpui-kit.md has a first sketch).",{"type":22,"tag":70,"props":1035,"children":1037},{"id":1036},"how-to-read-the-sources",[1038],{"type":31,"value":17},{"type":22,"tag":23,"props":1040,"children":1041},{},[1042],{"type":31,"value":1043},"Every claim carries its URL and the date 2026-11-09. \"Unverified\" marks what reading could not settle; \"secondary\" marks review sites and blogs whose method is unstated. Where a repository was read through the GitHub API (stars, dates, file sizes), the figure is as of that call. The spike's measured numbers, when they land in platform.md, outrank anything quoted here.",1794599386634]