[{"data":1,"prerenderedAt":1237},["ShallowReactive",2],{"$fyBGtdDIhY6iVFQ0isyH9i6ZVDP8DQydRg-QKYuaNPSY":3},{"newThing":4,"project":5,"cycle":9,"sections":25,"threads":1165,"otherDocs":1166,"documents":1167,"images":1169,"archiveItems":1234,"links":1235},"The open info panel carries two toggles; opening it switched neither on",{"id":6,"label":7,"liveBase":8},"qnative","Qnative (provisional)",null,{"id":10,"num":11,"dir":12,"name":13,"title":14,"focus":15,"status":16,"statusNote":8,"created":17,"completed":8,"mode":18,"report":8,"recordless":19,"thumbnail":20,"imageCount":21,"artifactCount":22,"lastActivity":23,"hasPickup":19,"hasInitialPrompt":24},"c6",6,"c6.panel-toggles","panel-toggles","Panel Toggles","Two toggles in the open info panel, settable while it is open: **Help Mode** (on \u002F off) and **Dev Mode** (on \u002F off). Dev Mode is developer mode's own switch, the one the tray menu carries, in a second seat. Help Mode is the guide layer staying on as the person moves. Opening the panel switches nothing on.","active","2026-11-11","evolution (two pieces that exist, the Info View and developer mode's switch, joined in one seat).",false,"\u002Fcycles\u002Fqnative\u002Fc6-app-dev-tools-dark.png",12,1,"2026-11-13",true,[26,40,50,114,1135,1155],{"key":27,"title":28,"empty":19,"ast":29},"why","Why",{"type":30,"children":31},"root",[32],{"type":33,"tag":34,"props":35,"children":36},"element","p",{},[37],{"type":38,"value":39},"text","The info panel is where a person asks the app what they are looking at. The two modes that change how much the app explains itself belong in that same place: the guide layer that keeps explaining as they move, and the developer's view of the stream behind the pages. Today one lives nowhere (Help Mode is a new idea) and the other lives only in the tray menu. One seat, two switches, found where a person is already asking for help.",{"key":41,"title":42,"empty":19,"ast":43},"objective","Objective",{"type":30,"children":44},[45],{"type":33,"tag":34,"props":46,"children":47},{},[48],{"type":38,"value":49},"Done means: the open info panel shows a Help Mode toggle and a Dev Mode toggle; Dev Mode reads and writes the same saved value as the tray's \"Developer mode\" item, shown only where developer mode is allowed and saying so in one sentence where it is not; Help Mode has a written meaning (the default reading: the guide layer stays on as the person moves between pages, the panel's explanations and pointing following the page) and a saved value remembered across starts; opening the panel switches nothing on; a story per state that matters, light and dark; the workspace tests pass; a short note with how to try it and the one reading to check with Mark; committed on the branch, not pushed, not merged.",{"key":51,"title":52,"empty":19,"ast":53},"scope","Scope",{"type":30,"children":54},[55],{"type":33,"tag":56,"props":57,"children":58},"ul",{},[59,104],{"type":33,"tag":60,"props":61,"children":62},"li",{},[63,69,71,78,80,86,88,94,96,102],{"type":33,"tag":64,"props":65,"children":66},"strong",{},[67],{"type":38,"value":68},"In:",{"type":38,"value":70}," ",{"type":33,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":38,"value":77},"crates\u002Fapp\u002Fsrc\u002Fguide\u002F",{"type":38,"value":79}," (the panel), the saved values through ",{"type":33,"tag":72,"props":81,"children":83},{"className":82},[],[84],{"type":38,"value":85},"host::Store",{"type":38,"value":87},", ",{"type":33,"tag":72,"props":89,"children":91},{"className":90},[],[92],{"type":38,"value":93},"crates\u002Fdevmode",{"type":38,"value":95}," only where the switch is read, the stories for the panel's states, ",{"type":33,"tag":72,"props":97,"children":99},{"className":98},[],[100],{"type":38,"value":101},"cycles\u002Fc6.panel-toggles\u002F",{"type":38,"value":103}," here.",{"type":33,"tag":60,"props":105,"children":106},{},[107,112],{"type":33,"tag":64,"props":108,"children":109},{},[110],{"type":38,"value":111},"Out:",{"type":38,"value":113}," the tray item (it stays), new help content beyond what the guide layer already shows, Live, Events, Monitor (c3), the design site (c138 records the ruling; captures into design's atlas only if the native capture mode is cheap to run).",{"key":115,"title":116,"empty":19,"ast":117},"key-changes","Key Changes",{"type":30,"children":118},[119],{"type":33,"tag":56,"props":120,"children":121},{},[122,148,680,740,939,1074],{"type":33,"tag":60,"props":123,"children":124},{},[125,130,132,138,140,146],{"type":33,"tag":64,"props":126,"children":127},{},[128],{"type":38,"value":129},"kick-off (2026-11-11):",{"type":38,"value":131}," this record and the prompt, written in the c133 design session from Mark's words; the idea recorded in design's c138 plan the same hour. The sprint runs in a fresh agent on ",{"type":33,"tag":72,"props":133,"children":135},{"className":134},[],[136],{"type":38,"value":137},"c3-info-toggles",{"type":38,"value":139},", cut from ",{"type":33,"tag":72,"props":141,"children":143},{"className":142},[],[144],{"type":38,"value":145},"c3\u002Fphases",{"type":38,"value":147},".",{"type":33,"tag":60,"props":149,"children":150},{},[151,156,158,164,166,171,173],{"type":33,"tag":64,"props":152,"children":153},{},[154],{"type":38,"value":155},"sprint (2026-11-11):",{"type":38,"value":157}," built on ",{"type":33,"tag":72,"props":159,"children":161},{"className":160},[],[162],{"type":38,"value":163},"claude\u002Fc6-panel-toggles-1cd061",{"type":38,"value":165}," (the kick-off named ",{"type":33,"tag":72,"props":167,"children":169},{"className":168},[],[170],{"type":38,"value":137},{"type":38,"value":172},"; the branch the agent was given is this one).",{"type":33,"tag":56,"props":174,"children":175},{},[176,216,249,299,364,389,491,533,652,670],{"type":33,"tag":60,"props":177,"children":178},{},[179,185,187,192,194,199,201,207,209,215],{"type":33,"tag":180,"props":181,"children":182},"em",{},[183],{"type":38,"value":184},"The seat.",{"type":38,"value":186}," The open info panel (c2's Info View, the strip over the footer) keeps what it is and gains one group at its right: ",{"type":33,"tag":64,"props":188,"children":189},{},[190],{"type":38,"value":191},"Help mode",{"type":38,"value":193}," and ",{"type":33,"tag":64,"props":195,"children":196},{},[197],{"type":38,"value":198},"Developer mode",{"type":38,"value":200},", each the kit's ",{"type":33,"tag":72,"props":202,"children":204},{"className":203},[],[205],{"type":38,"value":206},"Switch",{"type":38,"value":208}," (the layer's toggle, R8) with one line under it that says what is true now. The group is drawn only while the panel is open; opening the panel (Info in the footer, or Getting started) switches neither on. ",{"type":33,"tag":72,"props":210,"children":212},{"className":211},[],[213],{"type":38,"value":214},"crates\u002Fapp\u002Fsrc\u002Fguide\u002Finfo.rs",{"type":38,"value":147},{"type":33,"tag":60,"props":217,"children":218},{},[219,224,226,232,234,239,241,247],{"type":33,"tag":180,"props":220,"children":221},{},[222],{"type":38,"value":223},"Help mode, its meaning decided from what exists.",{"type":38,"value":225}," On: the panel opens with each window (at start and on a reopen from the tray) and stays open as the person moves between pages; with nothing under the pointer it says which page this is and what it shows (the app map's entry for the page), and the tour is at hand (Tour this page, where the tour has a step on this page; All tours, to Getting started, otherwise; nothing while a tour runs). Off: the panel opens when asked and says what is under the pointer, as before. Closing the panel with Help mode on closes it for now; the next window opens it again. Saved as ",{"type":33,"tag":72,"props":227,"children":229},{"className":228},[],[230],{"type":38,"value":231},"help.mode",{"type":38,"value":233}," through ",{"type":33,"tag":72,"props":235,"children":237},{"className":236},[],[238],{"type":38,"value":85},{"type":38,"value":240}," in ",{"type":33,"tag":72,"props":242,"children":244},{"className":243},[],[245],{"type":38,"value":246},"settings.json",{"type":38,"value":248},", so it holds across starts. A fix the page-following needed: a region noted on the page before a click that navigated is no longer described on the new page.",{"type":33,"tag":60,"props":250,"children":251},{},[252,257,259,265,267,273,275,281,283,289,291,297],{"type":33,"tag":180,"props":253,"children":254},{},[255],{"type":38,"value":256},"Developer mode, the tray's switch in a second seat.",{"type":38,"value":258}," The panel's switch turns ",{"type":33,"tag":72,"props":260,"children":262},{"className":261},[],[263],{"type":38,"value":264},"extensions::set_on(\"dev\")",{"type":38,"value":266},", the same ",{"type":33,"tag":72,"props":268,"children":270},{"className":269},[],[271],{"type":38,"value":272},"extensions.dev.on",{"type":38,"value":274}," the tray's item reads and writes. A new ",{"type":33,"tag":72,"props":276,"children":278},{"className":277},[],[279],{"type":38,"value":280},"extensions::on_change",{"type":38,"value":282}," tells every seat; ",{"type":33,"tag":72,"props":284,"children":286},{"className":285},[],[287],{"type":38,"value":288},"main.rs",{"type":38,"value":290}," registers it for the tray, so the tray's checkmark follows a change made in the panel (the tray's own click goes the same way; the hook is tested, the checkmark not looked at on screen: this session has no Screen Recording). The row uses the extension's own words, now ",{"type":33,"tag":72,"props":292,"children":294},{"className":293},[],[295],{"type":38,"value":296},"devmode::TOGGLE",{"type":38,"value":298}," (\"Developer mode\"), so one switch has one name in both seats; Mark's \"Dev Mode\" is that switch. The tray item stays.",{"type":33,"tag":60,"props":300,"children":301},{},[302,307,309,315,317,323,325,330,332,338,340,346,348,354,356,362],{"type":33,"tag":180,"props":303,"children":304},{},[305],{"type":38,"value":306},"Where it is not given, the row stays and says why (R5).",{"type":38,"value":308}," Carried but not allowed (a release build with ",{"type":33,"tag":72,"props":310,"children":312},{"className":311},[],[313],{"type":38,"value":314},"--features dev",{"type":38,"value":316}," started without ",{"type":33,"tag":72,"props":318,"children":320},{"className":319},[],[321],{"type":38,"value":322},"--dev",{"type":38,"value":324},"): ",{"type":33,"tag":72,"props":326,"children":328},{"className":327},[],[329],{"type":38,"value":288},{"type":38,"value":331},"'s one ",{"type":33,"tag":72,"props":333,"children":335},{"className":334},[],[336],{"type":38,"value":337},"cfg(feature = \"dev\")",{"type":38,"value":339}," block now either gives the extension or names it through ",{"type":33,"tag":72,"props":341,"children":343},{"className":342},[],[344],{"type":38,"value":345},"devmode::withheld()",{"type":38,"value":347}," (a new ",{"type":33,"tag":72,"props":349,"children":351},{"className":350},[],[352],{"type":38,"value":353},"layer::extension::Withheld",{"type":38,"value":355},", kept by ",{"type":33,"tag":72,"props":357,"children":359},{"className":358},[],[360],{"type":38,"value":361},"extensions::withhold",{"type":38,"value":363},"); the switch is drawn disabled with \"Not allowed in this process; start the app with --dev to allow it.\" Not in the build (the lean build): \"This build has no developer mode; it was built without --features dev.\"",{"type":33,"tag":60,"props":365,"children":366},{},[367,372,373,379,381,387],{"type":33,"tag":180,"props":368,"children":369},{},[370],{"type":38,"value":371},"How to try it.",{"type":38,"value":70},{"type":33,"tag":72,"props":374,"children":376},{"className":375},[],[377],{"type":38,"value":378},"cargo dev -- --data synthetic",{"type":38,"value":380},", then Info at the right of the footer: the panel opens above the footer, the two toggles at its right. Turn Help mode on, quit from the tray, start again: the panel opens with the window, says what the page shows, and offers Tour this page on a page with a tour step (Models, for one). Turn Developer mode off: the Dev group leaves the sidebar and the tray's Developer mode item unticks. ",{"type":33,"tag":72,"props":382,"children":384},{"className":383},[],[385],{"type":38,"value":386},"QPOINT_SETTINGS=\u003Cfile>",{"type":38,"value":388}," keeps the trial off the real settings.",{"type":33,"tag":60,"props":390,"children":391},{},[392,397,398,404,406,412,414,420,422,428,429,435,437,443,444,450,452,458,460,466,468,474,476,482,483,489],{"type":33,"tag":180,"props":393,"children":394},{},[395],{"type":38,"value":396},"Stories (R6), light and dark:",{"type":38,"value":70},{"type":33,"tag":72,"props":399,"children":401},{"className":400},[],[402],{"type":38,"value":403},"app-info-toggles",{"type":38,"value":405}," (open, both off), ",{"type":33,"tag":72,"props":407,"children":409},{"className":408},[],[410],{"type":38,"value":411},"app-info-help-mode",{"type":38,"value":413}," (Help mode saved on before the window opened; the window opened the panel), ",{"type":33,"tag":72,"props":415,"children":417},{"className":416},[],[418],{"type":38,"value":419},"app-info-dev-mode",{"type":38,"value":421}," (on where allowed), ",{"type":33,"tag":72,"props":423,"children":425},{"className":424},[],[426],{"type":38,"value":427},"app-info-dev-not-allowed",{"type":38,"value":87},{"type":33,"tag":72,"props":430,"children":432},{"className":431},[],[433],{"type":38,"value":434},"app-info-dev-not-in-build",{"type":38,"value":436},"; the existing ",{"type":33,"tag":72,"props":438,"children":440},{"className":439},[],[441],{"type":38,"value":442},"app-info-band",{"type":38,"value":193},{"type":33,"tag":72,"props":445,"children":447},{"className":446},[],[448],{"type":38,"value":449},"app-info-row",{"type":38,"value":451}," now show the toggles beside a described region. ",{"type":33,"tag":72,"props":453,"children":455},{"className":454},[],[456],{"type":38,"value":457},"cargo run -p stories -- --only app-info-help-mode",{"type":38,"value":459},". Captured into design's qnative atlas with the native capture mode (thread ",{"type":33,"tag":72,"props":461,"children":463},{"className":462},[],[464],{"type":38,"value":465},"c6-panel-toggles",{"type":38,"value":467},", program design ",{"type":33,"tag":72,"props":469,"children":471},{"className":470},[],[472],{"type":38,"value":473},"scripts\u002Fshot-programs\u002Fc6-panel-toggles-native.json",{"type":38,"value":475},", twelve PNGs: ",{"type":33,"tag":72,"props":477,"children":479},{"className":478},[],[480],{"type":38,"value":481},"c6-app-info-*",{"type":38,"value":193},{"type":33,"tag":72,"props":484,"children":486},{"className":485},[],[487],{"type":38,"value":488},"c6-app-dev-tools-*",{"type":38,"value":490},"), left uncommitted for design's sessions.",{"type":33,"tag":60,"props":492,"children":493},{},[494,499,501,507,509,515,517,523,525,531],{"type":33,"tag":180,"props":495,"children":496},{},[497],{"type":38,"value":498},"Tests.",{"type":38,"value":500}," Five headless tests in ",{"type":33,"tag":72,"props":502,"children":504},{"className":503},[],[505],{"type":38,"value":506},"crates\u002Fstories",{"type":38,"value":508}," click the panel's real switches: opening the panel switches nothing on; the switches save Help mode and the tray's value, the tray is told, the Dev group leaves; Help mode opens the panel with the window, and without it the panel waits; the not-allowed row does not turn and nothing is saved; the lean row says so; a sixth holds the rail's cyan to developer mode's group. ",{"type":33,"tag":72,"props":510,"children":512},{"className":511},[],[513],{"type":38,"value":514},"cargo test --workspace",{"type":38,"value":516}," passes (114 tests); this change adds no warnings (three in ",{"type":33,"tag":72,"props":518,"children":520},{"className":519},[],[521],{"type":38,"value":522},"nozzle",{"type":38,"value":524},"'s tests at ",{"type":33,"tag":72,"props":526,"children":528},{"className":527},[],[529],{"type":38,"value":530},"stream.rs:804",{"type":38,"value":532}," predate it, c3's).",{"type":33,"tag":60,"props":534,"children":535},{},[536,541,543,550,552,558,560,566,568,574,576,582,584,590,592,598,600,606,608,614,616,622,624,629,630,636,638,644,645,650],{"type":33,"tag":180,"props":537,"children":538},{},[539],{"type":38,"value":540},"Developer mode's rail group in the tour's cyan",{"type":38,"value":542}," (Mark, later the same evening; his words in ",{"type":33,"tag":544,"props":545,"children":547},"a",{"href":546},"\u002Fcycles\u002Fqnative\u002Fc6\u002Fdoc\u002Finitial-prompt",[548],{"type":38,"value":549},"initial-prompt.md",{"type":38,"value":551},"). While developer mode is on, the Dev group's entries (their words and icons) draw in the tour's own accent, ",{"type":33,"tag":72,"props":553,"children":555},{"className":554},[],[556],{"type":38,"value":557},"app::tour::view::ACCENT",{"type":38,"value":559}," (#0099FF, the same in light and dark; the v5 panel, its callouts and its ring draw with it through ",{"type":33,"tag":72,"props":561,"children":563},{"className":562},[],[564],{"type":38,"value":565},"material(cx).accent",{"type":38,"value":567},", and the rail reads it the same way), so the developer's view reads as the same kind of overlay as the tour. Colour only: the kit's ",{"type":33,"tag":72,"props":569,"children":571},{"className":570},[],[572],{"type":38,"value":573},"SidebarMenuItem::label_style",{"type":38,"value":575}," and the icon's own colour, which hold through hover and the active row; nothing in the rail's structure moved. ",{"type":33,"tag":72,"props":577,"children":579},{"className":578},[],[580],{"type":38,"value":581},"shell::rail_tint",{"type":38,"value":583}," names the rule; ",{"type":33,"tag":72,"props":585,"children":587},{"className":586},[],[588],{"type":38,"value":589},"extensions::shown",{"type":38,"value":591}," gives the shell each group's id, and ",{"type":33,"tag":72,"props":593,"children":595},{"className":594},[],[596],{"type":38,"value":597},"extensions::DEV",{"type":38,"value":599}," names developer mode's. Off, the group is not drawn, and where developer mode is not allowed it never is, so nothing is cyan. The token is the tour view's constant, not ",{"type":33,"tag":72,"props":601,"children":603},{"className":602},[],[604],{"type":38,"value":605},"layer::tokens",{"type":38,"value":607}," (generated from the web layer, which has no tour accent; its nearest, ",{"type":33,"tag":72,"props":609,"children":611},{"className":610},[],[612],{"type":38,"value":613},"ACCENT_BLUE",{"type":38,"value":615}," #2FAEFD, is another colour). Not done: the group's header (\"Dev\") keeps the kit's colour, since the kit's ",{"type":33,"tag":72,"props":617,"children":619},{"className":618},[],[620],{"type":38,"value":621},"SidebarGroup",{"type":38,"value":623}," takes no colour of its own and a group drawn by hand would restyle the rail, which is c7's. Stories: ",{"type":33,"tag":72,"props":625,"children":627},{"className":626},[],[628],{"type":38,"value":419},{"type":38,"value":193},{"type":33,"tag":72,"props":631,"children":633},{"className":632},[],[634],{"type":38,"value":635},"app-dev-tools",{"type":38,"value":637}," (the active entry) show it, light and dark; ",{"type":33,"tag":72,"props":639,"children":641},{"className":640},[],[642],{"type":38,"value":643},"app-landing-dev-off",{"type":38,"value":193},{"type":33,"tag":72,"props":646,"children":648},{"className":647},[],[649],{"type":38,"value":427},{"type":38,"value":651}," show nothing cyan. A test holds the rule.",{"type":33,"tag":60,"props":653,"children":654},{},[655,660,662,668],{"type":33,"tag":180,"props":656,"children":657},{},[658],{"type":38,"value":659},"Handed to c7, not built here.",{"type":38,"value":661}," Mark's other two sentences of the evening, the space between the rail's sections and the web app's left nav (no icons, section headers), became qnative c7, run in the cloud on ",{"type":33,"tag":72,"props":663,"children":665},{"className":664},[],[666],{"type":38,"value":667},"main",{"type":38,"value":669}," and merging after this cycle; as relayed, this sprint keeps only what is developer mode's.",{"type":33,"tag":60,"props":671,"children":672},{},[673,678],{"type":33,"tag":180,"props":674,"children":675},{},[676],{"type":38,"value":677},"The one reading to check with Mark:",{"type":38,"value":679}," \"set when it is open\" taken as shown and settable only in the open panel, not switched on by opening it. Two smaller choices made without asking: the panel names the switch \"Developer mode\" (the tray's words), and in the lean build the row stays and says so, as this record's shape asked.",{"type":33,"tag":60,"props":681,"children":682},{},[683,688,690,695,697,703,705,710,712,717,719,724,726,731,733,738],{"type":33,"tag":64,"props":684,"children":685},{},[686],{"type":38,"value":687},"rebase (2026-11-11):",{"type":38,"value":689}," at c3's word, rebased onto ",{"type":33,"tag":72,"props":691,"children":693},{"className":692},[],[694],{"type":38,"value":667},{"type":38,"value":696}," at ",{"type":33,"tag":72,"props":698,"children":700},{"className":699},[],[701],{"type":38,"value":702},"5337c28",{"type":38,"value":704}," (c3's Phase 3, Live Activity, and its review stop 3; c5's Activity; c7's record), so the merge is a fast-forward of two commits; the cherry-picked record was dropped as already on ",{"type":33,"tag":72,"props":706,"children":708},{"className":707},[],[709],{"type":38,"value":667},{"type":38,"value":711},", and nothing conflicted. Phase 3's new Dev page, Live Activity, takes the tour's cyan with the rest of the group. With Activity in the rail the Dev group sits lower, so in ",{"type":33,"tag":72,"props":713,"children":715},{"className":714},[],[716],{"type":38,"value":419},{"type":38,"value":718}," only its first entry shows above the open panel; ",{"type":33,"tag":72,"props":720,"children":722},{"className":721},[],[723],{"type":38,"value":635},{"type":38,"value":725}," shows the whole group. ",{"type":33,"tag":72,"props":727,"children":729},{"className":728},[],[730],{"type":38,"value":514},{"type":38,"value":732}," passes on the rebased tree (157 tests; still only ",{"type":33,"tag":72,"props":734,"children":736},{"className":735},[],[737],{"type":38,"value":522},{"type":38,"value":739},"'s three older warnings); the twelve captures in design's atlas were retaken from it.",{"type":33,"tag":60,"props":741,"children":742},{},[743,748,750,756,758,764,766],{"type":33,"tag":64,"props":744,"children":745},{},[746],{"type":38,"value":747},"ruling (2026-11-11):",{"type":38,"value":749}," Mark ruled (b) on the lean build's Developer mode row (c3's call 14, ",{"type":33,"tag":72,"props":751,"children":753},{"className":752},[],[754],{"type":38,"value":755},"cycles\u002Fc3.developer-mode\u002Freview-3.md",{"type":38,"value":757},"), relayed from the c133 session; design's c138 plan records it as ruling 10 (design ",{"type":33,"tag":72,"props":759,"children":761},{"className":760},[],[762],{"type":38,"value":763},"aade2b9668",{"type":38,"value":765},").",{"type":33,"tag":56,"props":767,"children":768},{},[769,809,826,891,929],{"type":33,"tag":60,"props":770,"children":771},{},[772,777,779,785,787,792,794,799,801,807],{"type":33,"tag":180,"props":773,"children":774},{},[775],{"type":38,"value":776},"What failed.",{"type":38,"value":778}," Since the merge, ",{"type":33,"tag":72,"props":780,"children":782},{"className":781},[],[783],{"type":38,"value":784},"scripts\u002Fcheck-lean.sh",{"type":38,"value":786}," had failed on ",{"type":33,"tag":72,"props":788,"children":790},{"className":789},[],[791],{"type":38,"value":667},{"type":38,"value":793},". Its first marker was developer mode's name, \"Developer mode\", and the lean row's label in ",{"type":33,"tag":72,"props":795,"children":797},{"className":796},[],[798],{"type":38,"value":214},{"type":38,"value":800}," puts that name in the app crate, so in every build. ",{"type":33,"tag":72,"props":802,"children":804},{"className":803},[],[805],{"type":38,"value":806},"devmode",{"type":38,"value":808}," stayed out of the lean dependency graph throughout. The smaller choice the sprint listed as made without asking, that the lean row stays and says so, is now ruled.",{"type":33,"tag":60,"props":810,"children":811},{},[812,817,819,824],{"type":33,"tag":180,"props":813,"children":814},{},[815],{"type":38,"value":816},"The ruling.",{"type":38,"value":818}," The row that says this build has no developer mode stays. The check looks for words only ",{"type":33,"tag":72,"props":820,"children":822},{"className":821},[],[823],{"type":38,"value":93},{"type":38,"value":825}," carries, not its name.",{"type":33,"tag":60,"props":827,"children":828},{},[829,841],{"type":33,"tag":180,"props":830,"children":831},{},[832,834,839],{"type":38,"value":833},"The change, c3's patch with two fixes; ",{"type":33,"tag":72,"props":835,"children":837},{"className":836},[],[838],{"type":38,"value":784},{"type":38,"value":840}," only, no code changed.",{"type":33,"tag":56,"props":842,"children":843},{},[844,849,861,873],{"type":33,"tag":60,"props":845,"children":846},{},[847],{"type":38,"value":848},"\"Developer mode\" is no longer a marker. A comment says why: it is the switch's title and the lean row's too.",{"type":33,"tag":60,"props":850,"children":851},{},[852,854,859],{"type":38,"value":853},"Five devmode-only markers take its place: ",{"type":33,"tag":72,"props":855,"children":857},{"className":856},[],[858],{"type":38,"value":345},{"type":38,"value":860},"'s sentence (\"Not allowed in this process; start the app with --dev to allow it.\"), \"\u002Fdev\u002Fsource\", \"\u002Fdev\u002Flive\", and one sentence each from Live and Source.",{"type":33,"tag":60,"props":862,"children":863},{},[864,866,872],{"type":38,"value":865},"One allowance: the lean binary may name \"Developer mode\" once, and only beside the lean row's sentence (",{"type":33,"tag":72,"props":867,"children":869},{"className":868},[],[870],{"type":38,"value":871},"NOT_IN_BUILD",{"type":38,"value":765},{"type":33,"tag":60,"props":874,"children":875},{},[876,878],{"type":38,"value":877},"The two fixes:\n",{"type":33,"tag":56,"props":879,"children":880},{},[881,886],{"type":33,"tag":60,"props":882,"children":883},{},[884],{"type":38,"value":885},"The script's header cites the ruling as design records it, not as a quoted amendment.",{"type":33,"tag":60,"props":887,"children":888},{},[889],{"type":38,"value":890},"The allowance counts each occurrence of the name, not each line of the binary that has it.",{"type":33,"tag":60,"props":892,"children":893},{},[894,899,901],{"type":33,"tag":180,"props":895,"children":896},{},[897],{"type":38,"value":898},"The check, run on both release builds from this tree (macOS):",{"type":38,"value":900}," passed.\n",{"type":33,"tag":56,"props":902,"children":903},{},[904,914,919,924],{"type":33,"tag":60,"props":905,"children":906},{},[907,912],{"type":33,"tag":72,"props":908,"children":910},{"className":909},[],[911],{"type":38,"value":806},{"type":38,"value":913}," in the dependency graph: lean 0, full 1.",{"type":33,"tag":60,"props":915,"children":916},{},[917],{"type":38,"value":918},"Each of the twelve markers: lean 0, full 1.",{"type":33,"tag":60,"props":920,"children":921},{},[922],{"type":38,"value":923},"The allowance: \"Developer mode\" 1, the row's sentence 1.",{"type":33,"tag":60,"props":925,"children":926},{},[927],{"type":38,"value":928},"Sizes: lean 25,943,600 bytes, full 30,500,512.",{"type":33,"tag":60,"props":930,"children":931},{},[932,937],{"type":33,"tag":180,"props":933,"children":934},{},[935],{"type":38,"value":936},"The control:",{"type":38,"value":938}," with the full build in the lean seat, every marker reads IN THE LEAN BUILD and the allowance fails (\"Developer mode\" 3). Linux and Windows are left to CI on the PR. The three short paths are the markers most at risk of a missing control there.",{"type":33,"tag":60,"props":940,"children":941},{},[942,947],{"type":33,"tag":64,"props":943,"children":944},{},[945],{"type":38,"value":946},"fix (2026-11-11), the sprint's tests against c5's:",{"type":33,"tag":56,"props":948,"children":949},{},[950,997,1023,1033],{"type":33,"tag":60,"props":951,"children":952},{},[953,957,959,965,967,972,974,980,982,988,989,995],{"type":33,"tag":180,"props":954,"children":955},{},[956],{"type":38,"value":776},{"type":38,"value":958}," CI's first run on the PR (",{"type":33,"tag":72,"props":960,"children":962},{"className":961},[],[963],{"type":38,"value":964},"43141982779",{"type":38,"value":966},") failed on macOS, and so had every run on ",{"type":33,"tag":72,"props":968,"children":970},{"className":969},[],[971],{"type":38,"value":667},{"type":38,"value":973}," since ",{"type":33,"tag":72,"props":975,"children":977},{"className":976},[],[978],{"type":38,"value":979},"8242467",{"type":38,"value":981},", on all three systems. The failing tests were c5's ",{"type":33,"tag":72,"props":983,"children":985},{"className":984},[],[986],{"type":38,"value":987},"status_off_says_qcontrol_is_not_running",{"type":38,"value":193},{"type":33,"tag":72,"props":990,"children":992},{"className":991},[],[993],{"type":38,"value":994},"status_starting_says_qcontrol_is_starting",{"type":38,"value":996},", one or both. CI's Test step comes before the lean check, so the check had not run there.",{"type":33,"tag":60,"props":998,"children":999},{},[1000,1005,1007,1013,1015,1021],{"type":33,"tag":180,"props":1001,"children":1002},{},[1003],{"type":38,"value":1004},"The cause was this sprint's six tests.",{"type":38,"value":1006}," They build a story's shell, and ",{"type":33,"tag":72,"props":1008,"children":1010},{"className":1009},[],[1011],{"type":38,"value":1012},"app_shell_full",{"type":38,"value":1014}," clears the process-wide forced state. They did not take the ",{"type":33,"tag":72,"props":1016,"children":1018},{"className":1017},[],[1019],{"type":38,"value":1020},"serial()",{"type":38,"value":1022}," guard that the page-state tests take. On a runner with few threads, one of them could clear a Status test's force between its setting and its reading.",{"type":33,"tag":60,"props":1024,"children":1025},{},[1026,1031],{"type":33,"tag":180,"props":1027,"children":1028},{},[1029],{"type":38,"value":1030},"The fix.",{"type":38,"value":1032}," The six tests now take the guard, and the guard's comment says why. Tests only, no app code.",{"type":33,"tag":60,"props":1034,"children":1035},{},[1036,1041],{"type":33,"tag":180,"props":1037,"children":1038},{},[1039],{"type":38,"value":1040},"Checked here:",{"type":33,"tag":56,"props":1042,"children":1043},{},[1044,1057],{"type":33,"tag":60,"props":1045,"children":1046},{},[1047,1049,1055],{"type":38,"value":1048},"With ",{"type":33,"tag":72,"props":1050,"children":1052},{"className":1051},[],[1053],{"type":38,"value":1054},"--test-threads=2",{"type":38,"value":1056}," the failure reproduced in two runs of four. After the fix, eight runs of eight passed with one to three threads.",{"type":33,"tag":60,"props":1058,"children":1059},{},[1060,1065,1067,1072],{"type":33,"tag":72,"props":1061,"children":1063},{"className":1062},[],[1064],{"type":38,"value":514},{"type":38,"value":1066}," passes (173 tests; still only ",{"type":33,"tag":72,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":38,"value":522},{"type":38,"value":1073},"'s three older warnings).",{"type":33,"tag":60,"props":1075,"children":1076},{},[1077,1082,1084],{"type":33,"tag":64,"props":1078,"children":1079},{},[1080],{"type":38,"value":1081},"Help mode became Hints (2026-11-13, the \"Live activity viewer parity\" session).",{"type":38,"value":1083}," Mark: \"help mode toggle doesn't do anything when on or off, whether the info panel is open or not seems to be the real decider whether or not to show hints. Let's change help mode to \"Hints\" and if it's off, let's leave it off. hints only show up if the info panel is open, but if hints are off and the panel is open, they don't highlight items on the page (ie off).\" What changed:",{"type":33,"tag":56,"props":1085,"children":1086},{},[1087,1097,1115],{"type":33,"tag":60,"props":1088,"children":1089},{},[1090,1095],{"type":33,"tag":64,"props":1091,"children":1092},{},[1093],{"type":38,"value":1094},"Info",{"type":38,"value":1096}," in the footer opens and closes the panel, which now stays as the person leaves it from page to page. It no longer opens with each window.",{"type":33,"tag":60,"props":1098,"children":1099},{},[1100,1105,1107,1113],{"type":33,"tag":64,"props":1101,"children":1102},{},[1103],{"type":38,"value":1104},"Hints",{"type":38,"value":1106}," (saved as ",{"type":33,"tag":72,"props":1108,"children":1110},{"className":1109},[],[1111],{"type":38,"value":1112},"info.hints",{"type":38,"value":1114},", on unless turned off, so off stays off) decide whether pointing at the page rings a region and names it. With the panel open and Hints off, nothing is ringed or named, and the panel says \"Hints are off. Turn them on to see what anything on the page is.\" The tour launcher stays.",{"type":33,"tag":60,"props":1116,"children":1117},{},[1118,1120,1125,1127,1133],{"type":38,"value":1119},"The ",{"type":33,"tag":72,"props":1121,"children":1123},{"className":1122},[],[1124],{"type":38,"value":411},{"type":38,"value":1126}," story is now ",{"type":33,"tag":72,"props":1128,"children":1130},{"className":1129},[],[1131],{"type":38,"value":1132},"app-info-hints-off",{"type":38,"value":1134},". The five headless tests were rewritten for this behaviour.",{"key":1136,"title":1137,"empty":19,"ast":1138},"outcome","Outcome",{"type":30,"children":1139},[1140],{"type":33,"tag":34,"props":1141,"children":1142},{},[1143],{"type":33,"tag":180,"props":1144,"children":1145},{},[1146,1148,1153],{"type":38,"value":1147},"At its review stop (2026-11-11): built, tested and merged into ",{"type":33,"tag":72,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":38,"value":667},{"type":38,"value":1154},"; the lean row ruled (b) and the lean check's fix in a PR; waits on Mark's check of the one reading.",{"key":1156,"title":1157,"empty":19,"ast":1158},"extra","The shape",{"type":30,"children":1159},[1160],{"type":33,"tag":34,"props":1161,"children":1162},{},[1163],{"type":38,"value":1164},"The panel keeps what it is. One small group in it: two switches drawn with the layer's own toggle, each with a one-line meaning under it. Dev Mode: the same value the tray reads, written through the Store; where not allowed, the row stays and explains (a lean build, or not allowed in this process). Help Mode: a new saved value; on, the guide layer follows the page; off, the panel opens on demand as today. Nothing changes by opening the panel.",[],[549],[1168],{"file":549,"title":14},[1170,1180,1185,1191,1195,1201,1205,1211,1215,1221,1225,1231],{"src":1171,"kind":1172,"order":1173,"caption":1174,"thread":1175,"capturedAt":1177,"subject":1178,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-toggles-light.png","hero",228,"The panel opened from the footer's Info, both toggles off: Help mode off (the panel opens when asked), developer mode allowed and off (the Dev group is gone from the sidebar).",{"id":465,"label":1176,"date":17},"Panel Toggles: Help mode and Developer mode in the open info panel (qnative c6; design c138, the toggles' seat)","2026-11-12T01:03:10.274Z","native\u002Fapp-info-toggles","\u002Fcycles\u002Fqnative\u002Fc6\u002Fdoc\u002FCYCLE",{"src":1181,"kind":1172,"order":1182,"caption":1183,"thread":1184,"capturedAt":1177,"subject":1178,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-toggles-dark.png",229,"The same, dark.",{"id":465,"label":1176,"date":17},{"src":1186,"kind":1172,"order":1187,"caption":1188,"thread":1189,"capturedAt":1177,"subject":1190,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-help-mode-light.png",230,"Help mode on, saved before the window opened: the panel opened with the window, says what Models shows (the app map's entry), and offers Tour this page (the tour's step on Models).",{"id":465,"label":1176,"date":17},"native\u002Fapp-info-help-mode",{"src":1192,"kind":1172,"order":1193,"caption":1183,"thread":1194,"capturedAt":1177,"subject":1190,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-help-mode-dark.png",231,{"id":465,"label":1176,"date":17},{"src":1196,"kind":1172,"order":1197,"caption":1198,"thread":1199,"capturedAt":1177,"subject":1200,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-dev-mode-light.png",232,"Developer mode on where it is allowed: the Dev group back in the sidebar (its first entry shows above the open panel), its entries in the tour's cyan (#0099FF, the panel's and the callouts' own); the same saved value the tray's Developer mode item reads and writes.",{"id":465,"label":1176,"date":17},"native\u002Fapp-info-dev-mode",{"src":1202,"kind":1172,"order":1203,"caption":1183,"thread":1204,"capturedAt":1177,"subject":1200,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-dev-mode-dark.png",233,{"id":465,"label":1176,"date":17},{"src":1206,"kind":1172,"order":1207,"caption":1208,"thread":1209,"capturedAt":1177,"subject":1210,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-dev-not-allowed-light.png",234,"A release build with developer mode started without --dev: the switch is drawn disabled and the row says what allows it.",{"id":465,"label":1176,"date":17},"native\u002Fapp-info-dev-not-allowed",{"src":1212,"kind":1172,"order":1213,"caption":1183,"thread":1214,"capturedAt":1177,"subject":1210,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-dev-not-allowed-dark.png",235,{"id":465,"label":1176,"date":17},{"src":1216,"kind":1172,"order":1217,"caption":1218,"thread":1219,"capturedAt":1177,"subject":1220,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-dev-not-in-build-light.png",236,"The lean build (no --features dev): the row says this build has no developer mode.",{"id":465,"label":1176,"date":17},"native\u002Fapp-info-dev-not-in-build",{"src":1222,"kind":1172,"order":1223,"caption":1183,"thread":1224,"capturedAt":1177,"subject":1220,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-info-dev-not-in-build-dark.png",237,{"id":465,"label":1176,"date":17},{"src":1226,"kind":1172,"order":1227,"caption":1228,"thread":1229,"capturedAt":1177,"subject":1230,"route":1179},"\u002Fcycles\u002Fqnative\u002Fc6-app-dev-tools-light.png",238,"Dev › Tools open: the Dev group's entries (Tools, Source, Live Activity, Components below) in the tour's cyan, the active one too; the group's header keeps the kit's colour (the rail's structure, headers included, is qnative c7's).",{"id":465,"label":1176,"date":17},"native\u002Fapp-dev-tools",{"src":20,"kind":1172,"order":1232,"caption":1183,"thread":1233,"capturedAt":1177,"subject":1230,"route":1179},239,{"id":465,"label":1176,"date":17},[],[1236],{"route":1179,"href":8},1794599423779]