[{"data":1,"prerenderedAt":1529},["ShallowReactive",2],{"cycle-doc-design-c125-prior-art-wizard-kit.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":19},{"id":5,"title":6},"c125","Operations Wizard",{"id":8,"label":9},"design","Design","prior-art-wizard-kit.md","Prior art: app.qpoint.io's linear wizard kit",[13,14,15,16,17,18],"The pieces","Where it shipped","What it hands c125","The richer radar (branch `origin\u002Fmask-image`)","Found while copying","Replica changes (everything else is verbatim)",{"type":20,"children":21},"root",[22,30,194,200,685,690,998,1003,1074,1087,1107,1196,1231,1283,1288,1460,1465],{"type":23,"tag":24,"props":25,"children":26},"element","p",{},[27],{"type":28,"value":29},"text","c125 · 2026-10-27. Mark named this as the prior art: \"a simple linear wizard for complex selection routines\". It was documented first, then copied (Mark's ruling of 2026-10-27).",{"type":23,"tag":31,"props":32,"children":33},"ul",{},[34,79,104,144],{"type":23,"tag":35,"props":36,"children":37},"li",{},[38,44,46,53,55,61,63,69,71,77],{"type":23,"tag":39,"props":40,"children":41},"strong",{},[42],{"type":28,"value":43},"Source:",{"type":28,"value":45}," ",{"type":23,"tag":47,"props":48,"children":50},"code",{"className":49},[],[51],{"type":28,"value":52},"..\u002Fapp.qpoint.io\u002Fapp\u002Fcomponents\u002Fwizard\u002F",{"type":28,"value":54}," and ",{"type":23,"tag":47,"props":56,"children":58},{"className":57},[],[59],{"type":28,"value":60},"app\u002Futils\u002Fsequin.js",{"type":28,"value":62}," at ",{"type":23,"tag":47,"props":64,"children":66},{"className":65},[],[67],{"type":28,"value":68},"f5faf10",{"type":28,"value":70},". The kit is unchanged since ",{"type":23,"tag":47,"props":72,"children":74},{"className":73},[],[75],{"type":28,"value":76},"90dd408",{"type":28,"value":78}," (2026-03-10).",{"type":23,"tag":35,"props":80,"children":81},{},[82,87,89,95,96,102],{"type":23,"tag":39,"props":83,"children":84},{},[85],{"type":28,"value":86},"Not in q-nuxt-layer.",{"type":28,"value":88}," c23's pantry analysis listed all five components as app-local, and nobody extracted them since. The layer's ",{"type":23,"tag":47,"props":90,"children":92},{"className":91},[],[93],{"type":28,"value":94},"prose\u002FStep",{"type":28,"value":54},{"type":23,"tag":47,"props":97,"children":99},{"className":98},[],[100],{"type":28,"value":101},"StepWrapper",{"type":28,"value":103}," are doc-page steps, not a wizard.",{"type":23,"tag":35,"props":105,"children":106},{},[107,112,113,119,121,127,129,135,137,142],{"type":23,"tag":39,"props":108,"children":109},{},[110],{"type":28,"value":111},"Replica:",{"type":28,"value":45},{"type":23,"tag":47,"props":114,"children":116},{"className":115},[],[117],{"type":28,"value":118},"\u002Fpages\u002Fphase4\u002Fwizard-kit",{"type":28,"value":120},", built from ",{"type":23,"tag":47,"props":122,"children":124},{"className":123},[],[125],{"type":28,"value":126},"app\u002Fcomponents\u002Freplicas\u002Fwizard\u002F*",{"type":28,"value":128}," (",{"type":23,"tag":47,"props":130,"children":132},{"className":131},[],[133],{"type":28,"value":134},"ReplicasWizard*",{"type":28,"value":136},") and ",{"type":23,"tag":47,"props":138,"children":140},{"className":139},[],[141],{"type":28,"value":60},{"type":28,"value":143},".",{"type":23,"tag":35,"props":145,"children":146},{},[147,152],{"type":23,"tag":39,"props":148,"children":149},{},[150],{"type":28,"value":151},"Captures:",{"type":23,"tag":31,"props":153,"children":154},{},[155,175],{"type":23,"tag":35,"props":156,"children":157},{},[158,160,166,167,173],{"type":28,"value":159},"thread ",{"type":23,"tag":47,"props":161,"children":163},{"className":162},[],[164],{"type":28,"value":165},"c125-wizard-kit",{"type":28,"value":128},{"type":23,"tag":47,"props":168,"children":170},{"className":169},[],[171],{"type":28,"value":172},"c125-wizard-steps-tabs-{a,c,d}",{"type":28,"value":174},"), the original running on app.qpoint.io;",{"type":23,"tag":35,"props":176,"children":177},{},[178,179,185,186,192],{"type":28,"value":159},{"type":23,"tag":47,"props":180,"children":182},{"className":181},[],[183],{"type":28,"value":184},"c125-wizard-replica",{"type":28,"value":128},{"type":23,"tag":47,"props":187,"children":189},{"className":188},[],[190],{"type":28,"value":191},"c125-replica-*",{"type":28,"value":193},"), the copy on the design site.",{"type":23,"tag":195,"props":196,"children":198},"h2",{"id":197},"the-pieces",[199],{"type":28,"value":13},{"type":23,"tag":201,"props":202,"children":203},"table",{},[204,223],{"type":23,"tag":205,"props":206,"children":207},"thead",{},[208],{"type":23,"tag":209,"props":210,"children":211},"tr",{},[212,218],{"type":23,"tag":213,"props":214,"children":215},"th",{},[216],{"type":28,"value":217},"Piece",{"type":23,"tag":213,"props":219,"children":220},{},[221],{"type":28,"value":222},"What it is",{"type":23,"tag":224,"props":225,"children":226},"tbody",{},[227,305,397,519,584,601,641,666],{"type":23,"tag":209,"props":228,"children":229},{},[230,249],{"type":23,"tag":231,"props":232,"children":233},"td",{},[234,240,241,247],{"type":23,"tag":47,"props":235,"children":237},{"className":236},[],[238],{"type":28,"value":239},"Sequin",{"type":28,"value":128},{"type":23,"tag":47,"props":242,"children":244},{"className":243},[],[245],{"type":28,"value":246},"utils\u002Fsequin.js",{"type":28,"value":248},")",{"type":23,"tag":231,"props":250,"children":251},{},[252,254,260,262,268,269,275,276,282,283,289,290,296,297,303],{"type":28,"value":253},"A cursor over an array: ",{"type":23,"tag":47,"props":255,"children":257},{"className":256},[],[258],{"type":28,"value":259},"next",{"type":28,"value":261},", ",{"type":23,"tag":47,"props":263,"children":265},{"className":264},[],[266],{"type":28,"value":267},"prev",{"type":28,"value":261},{"type":23,"tag":47,"props":270,"children":272},{"className":271},[],[273],{"type":28,"value":274},"isAtFirstItem",{"type":28,"value":261},{"type":23,"tag":47,"props":277,"children":279},{"className":278},[],[280],{"type":28,"value":281},"isAtLastItem",{"type":28,"value":261},{"type":23,"tag":47,"props":284,"children":286},{"className":285},[],[287],{"type":28,"value":288},"activateItemByParam('id', …)",{"type":28,"value":261},{"type":23,"tag":47,"props":291,"children":293},{"className":292},[],[294],{"type":28,"value":295},"addItem",{"type":28,"value":261},{"type":23,"tag":47,"props":298,"children":300},{"className":299},[],[301],{"type":28,"value":302},"removeItemByParam",{"type":28,"value":304},". It clamps at the ends, and can loop on overshoot.",{"type":23,"tag":209,"props":306,"children":307},{},[308,317],{"type":23,"tag":231,"props":309,"children":310},{},[311],{"type":23,"tag":47,"props":312,"children":314},{"className":313},[],[315],{"type":28,"value":316},"WizardSteps",{"type":23,"tag":231,"props":318,"children":319},{},[320,322,328,330,336,338,344,345,351,353,359,360,366,368,374,375,381,382,387,389,395],{"type":28,"value":321},"The container. It takes ",{"type":23,"tag":47,"props":323,"children":325},{"className":324},[],[326],{"type":28,"value":327},"sequence",{"type":28,"value":329},", an array of steps ",{"type":23,"tag":47,"props":331,"children":333},{"className":332},[],[334],{"type":28,"value":335},"{ id, title, tab?, wizard? }",{"type":28,"value":337},". Header: tabs (",{"type":23,"tag":47,"props":339,"children":341},{"className":340},[],[342],{"type":28,"value":343},"tabs",{"type":28,"value":261},{"type":23,"tag":47,"props":346,"children":348},{"className":347},[],[349],{"type":28,"value":350},"centerTabs",{"type":28,"value":352},"), or the step title plus Back and \"Next : …\". Then Continue, then Submit on the last step. It emits ",{"type":23,"tag":47,"props":354,"children":356},{"className":355},[],[357],{"type":28,"value":358},"changeStep(id, step)",{"type":28,"value":54},{"type":23,"tag":47,"props":361,"children":363},{"className":362},[],[364],{"type":28,"value":365},"submit",{"type":28,"value":367},", and exposes ",{"type":23,"tag":47,"props":369,"children":371},{"className":370},[],[372],{"type":28,"value":373},"nextStep",{"type":28,"value":261},{"type":23,"tag":47,"props":376,"children":378},{"className":377},[],[379],{"type":28,"value":380},"prevStep",{"type":28,"value":54},{"type":23,"tag":47,"props":383,"children":385},{"className":384},[],[386],{"type":28,"value":365},{"type":28,"value":388},". The parent renders the body with ",{"type":23,"tag":47,"props":390,"children":392},{"className":391},[],[393],{"type":28,"value":394},"v-if",{"type":28,"value":396}," on the active id.",{"type":23,"tag":209,"props":398,"children":399},{},[400,413],{"type":23,"tag":231,"props":401,"children":402},{},[403,405,411],{"type":28,"value":404},"per-step ",{"type":23,"tag":47,"props":406,"children":408},{"className":407},[],[409],{"type":28,"value":410},"wizard",{"type":28,"value":412}," overrides",{"type":23,"tag":231,"props":414,"children":415},{},[416,422,423,429,431,437,438,444,446,452,454,460,462,468,469,475,476,482,483,489,490,496,497,503,504,510,511,517],{"type":23,"tag":47,"props":417,"children":419},{"className":418},[],[420],{"type":28,"value":421},"mode",{"type":28,"value":128},{"type":23,"tag":47,"props":424,"children":426},{"className":425},[],[427],{"type":28,"value":428},"form",{"type":28,"value":430}," · ",{"type":23,"tag":47,"props":432,"children":434},{"className":433},[],[435],{"type":28,"value":436},"listener",{"type":28,"value":430},{"type":23,"tag":47,"props":439,"children":441},{"className":440},[],[442],{"type":28,"value":443},"end",{"type":28,"value":445},"), ",{"type":23,"tag":47,"props":447,"children":449},{"className":448},[],[450],{"type":28,"value":451},"block",{"type":28,"value":453}," (hold Continue until the listener confirms), ",{"type":23,"tag":47,"props":455,"children":457},{"className":456},[],[458],{"type":28,"value":459},"listenConfirmation",{"type":28,"value":461}," (a boolean or a function, read reactively), ",{"type":23,"tag":47,"props":463,"children":465},{"className":464},[],[466],{"type":28,"value":467},"listenTxt",{"type":28,"value":261},{"type":23,"tag":47,"props":470,"children":472},{"className":471},[],[473],{"type":28,"value":474},"confirmTxt",{"type":28,"value":261},{"type":23,"tag":47,"props":477,"children":479},{"className":478},[],[480],{"type":28,"value":481},"continueTxt",{"type":28,"value":261},{"type":23,"tag":47,"props":484,"children":486},{"className":485},[],[487],{"type":28,"value":488},"submitTxt",{"type":28,"value":261},{"type":23,"tag":47,"props":491,"children":493},{"className":492},[],[494],{"type":28,"value":495},"submittingTxt",{"type":28,"value":261},{"type":23,"tag":47,"props":498,"children":500},{"className":499},[],[501],{"type":28,"value":502},"noNextBtn",{"type":28,"value":261},{"type":23,"tag":47,"props":505,"children":507},{"className":506},[],[508],{"type":28,"value":509},"noTitle",{"type":28,"value":261},{"type":23,"tag":47,"props":512,"children":514},{"className":513},[],[515],{"type":28,"value":516},"callback",{"type":28,"value":518}," (fired on Continue).",{"type":23,"tag":209,"props":520,"children":521},{},[522,531],{"type":23,"tag":231,"props":523,"children":524},{},[525],{"type":23,"tag":47,"props":526,"children":528},{"className":527},[],[529],{"type":28,"value":530},"WizardEduHarness",{"type":23,"tag":231,"props":532,"children":533},{},[534,536,542,544,550,551,556,557,562,563,569,570,576,577,583],{"type":28,"value":535},"The body on the left and an ",{"type":23,"tag":47,"props":537,"children":539},{"className":538},[],[540],{"type":28,"value":541},"#edu",{"type":28,"value":543}," slot on the right. The slot styles ",{"type":23,"tag":47,"props":545,"children":547},{"className":546},[],[548],{"type":28,"value":549},"h1",{"type":28,"value":261},{"type":23,"tag":47,"props":552,"children":554},{"className":553},[],[555],{"type":28,"value":195},{"type":28,"value":261},{"type":23,"tag":47,"props":558,"children":560},{"className":559},[],[561],{"type":28,"value":24},{"type":28,"value":261},{"type":23,"tag":47,"props":564,"children":566},{"className":565},[],[567],{"type":28,"value":568},".instruction",{"type":28,"value":261},{"type":23,"tag":47,"props":571,"children":573},{"className":572},[],[574],{"type":28,"value":575},".tip",{"type":28,"value":54},{"type":23,"tag":47,"props":578,"children":580},{"className":579},[],[581],{"type":28,"value":582},".tip.caution",{"type":28,"value":143},{"type":23,"tag":209,"props":585,"children":586},{},[587,596],{"type":23,"tag":231,"props":588,"children":589},{},[590],{"type":23,"tag":47,"props":591,"children":593},{"className":592},[],[594],{"type":28,"value":595},"WizardToggleHarness",{"type":23,"tag":231,"props":597,"children":598},{},[599],{"type":28,"value":600},"The same split with a narrow 360 px column of choices.",{"type":23,"tag":209,"props":602,"children":603},{},[604,613],{"type":23,"tag":231,"props":605,"children":606},{},[607],{"type":23,"tag":47,"props":608,"children":610},{"className":609},[],[611],{"type":28,"value":612},"WizardPingListener",{"type":23,"tag":231,"props":614,"children":615},{},[616,618,624,626,632,634,639],{"type":28,"value":617},"A spinning radar with expanding rings, then the proxy icon and a check with ",{"type":23,"tag":47,"props":619,"children":621},{"className":620},[],[622],{"type":28,"value":623},"confirmText",{"type":28,"value":625}," when ",{"type":23,"tag":47,"props":627,"children":629},{"className":628},[],[630],{"type":28,"value":631},"success",{"type":28,"value":633}," is set. The header uses it in ",{"type":23,"tag":47,"props":635,"children":637},{"className":636},[],[638],{"type":28,"value":436},{"type":28,"value":640}," mode.",{"type":23,"tag":209,"props":642,"children":643},{},[644,653],{"type":23,"tag":231,"props":645,"children":646},{},[647],{"type":23,"tag":47,"props":648,"children":650},{"className":649},[],[651],{"type":28,"value":652},"WizardFinalStep",{"type":23,"tag":231,"props":654,"children":655},{},[656,658,664],{"type":28,"value":657},"The end slide: ",{"type":23,"tag":47,"props":659,"children":661},{"className":660},[],[662],{"type":28,"value":663},"#image",{"type":28,"value":665},", title, sub, and a \"Next Steps\" link list.",{"type":23,"tag":209,"props":667,"children":668},{},[669,680],{"type":23,"tag":231,"props":670,"children":671},{},[672,678],{"type":23,"tag":47,"props":673,"children":675},{"className":674},[],[676],{"type":28,"value":677},"UxLinkBack",{"type":28,"value":679}," (app-local)",{"type":23,"tag":231,"props":681,"children":682},{},[683],{"type":28,"value":684},"The Back link in linear mode.",{"type":23,"tag":195,"props":686,"children":688},{"id":687},"where-it-shipped",[689],{"type":28,"value":14},{"type":23,"tag":201,"props":691,"children":692},{},[693,726],{"type":23,"tag":205,"props":694,"children":695},{},[696],{"type":23,"tag":209,"props":697,"children":698},{},[699,704,716,721],{"type":23,"tag":213,"props":700,"children":701},{},[702],{"type":28,"value":703},"Flow",{"type":23,"tag":213,"props":705,"children":706},{},[707,709,715],{"type":28,"value":708},"File (",{"type":23,"tag":47,"props":710,"children":712},{"className":711},[],[713],{"type":28,"value":714},"app\u002Fpages\u002F…",{"type":28,"value":248},{"type":23,"tag":213,"props":717,"children":718},{},[719],{"type":28,"value":720},"Steps",{"type":23,"tag":213,"props":722,"children":723},{},[724],{"type":28,"value":725},"Shape",{"type":23,"tag":224,"props":727,"children":728},{},[729,798,830,867,894,934,966],{"type":23,"tag":209,"props":730,"children":731},{},[732,737,754,759],{"type":23,"tag":231,"props":733,"children":734},{},[735],{"type":28,"value":736},"Install Qtap",{"type":23,"tag":231,"props":738,"children":739},{},[740,746,748],{"type":23,"tag":47,"props":741,"children":743},{"className":742},[],[744],{"type":28,"value":745},"orgs\u002Fcomponents\u002Finstall\u002Fqtap\u002FIndex.vue",{"type":28,"value":747},", mounted by ",{"type":23,"tag":47,"props":749,"children":751},{"className":750},[],[752],{"type":28,"value":753},"orgs\u002Finstall.vue",{"type":23,"tag":231,"props":755,"children":756},{},[757],{"type":28,"value":758},"environment → installation → complete",{"type":23,"tag":231,"props":760,"children":761},{},[762,767,769,774,776,781,783,789,791,796],{"type":23,"tag":47,"props":763,"children":765},{"className":764},[],[766],{"type":28,"value":436},{"type":28,"value":768}," + ",{"type":23,"tag":47,"props":770,"children":772},{"className":771},[],[773],{"type":28,"value":451},{"type":28,"value":775}," while waiting for the sensor to register, then ",{"type":23,"tag":47,"props":777,"children":779},{"className":778},[],[780],{"type":28,"value":443},{"type":28,"value":782},". Without ",{"type":23,"tag":47,"props":784,"children":786},{"className":785},[],[787],{"type":28,"value":788},"waitForTraffic",{"type":28,"value":790},": environment → installation (",{"type":23,"tag":47,"props":792,"children":794},{"className":793},[],[795],{"type":28,"value":428},{"type":28,"value":797},", Finish).",{"type":23,"tag":209,"props":799,"children":800},{},[801,806,815,820],{"type":23,"tag":231,"props":802,"children":803},{},[804],{"type":28,"value":805},"Install Qscan",{"type":23,"tag":231,"props":807,"children":808},{},[809],{"type":23,"tag":47,"props":810,"children":812},{"className":811},[],[813],{"type":28,"value":814},"orgs\u002Fcomponents\u002Finstall\u002Fqscan\u002FIndex.vue",{"type":23,"tag":231,"props":816,"children":817},{},[818],{"type":28,"value":819},"environment → installation",{"type":23,"tag":231,"props":821,"children":822},{},[823,828],{"type":23,"tag":47,"props":824,"children":826},{"className":825},[],[827],{"type":28,"value":428},{"type":28,"value":829},", Finish",{"type":23,"tag":209,"props":831,"children":832},{},[833,838,857,862],{"type":23,"tag":231,"props":834,"children":835},{},[836],{"type":28,"value":837},"Activate data-risk scanning",{"type":23,"tag":231,"props":839,"children":840},{},[841,847,849,855],{"type":23,"tag":47,"props":842,"children":844},{"className":843},[],[845],{"type":28,"value":846},"security\u002Fcomponents\u002Fdata-risk\u002Fwizards\u002Factivate\u002FIndex.vue",{"type":28,"value":848},", inline in the ",{"type":23,"tag":47,"props":850,"children":852},{"className":851},[],[853],{"type":28,"value":854},"NoneDetected",{"type":28,"value":856}," empty state",{"type":23,"tag":231,"props":858,"children":859},{},[860],{"type":28,"value":861},"Stacks → Data Types → Configuration → Persistence",{"type":23,"tag":231,"props":863,"children":864},{},[865],{"type":28,"value":866},"tabs, Activate",{"type":23,"tag":209,"props":868,"children":869},{},[870,875,884,889],{"type":23,"tag":231,"props":871,"children":872},{},[873],{"type":28,"value":874},"Activate vulnerability scanning",{"type":23,"tag":231,"props":876,"children":877},{},[878],{"type":23,"tag":47,"props":879,"children":881},{"className":880},[],[882],{"type":28,"value":883},"security\u002Fcomponents\u002Fvulnerabilities\u002Fwizards\u002Factivate\u002FIndex.vue",{"type":23,"tag":231,"props":885,"children":886},{},[887],{"type":28,"value":888},"Select Categories",{"type":23,"tag":231,"props":890,"children":891},{},[892],{"type":28,"value":893},"one step, Activate",{"type":23,"tag":209,"props":895,"children":896},{},[897,902,911,916],{"type":23,"tag":231,"props":898,"children":899},{},[900],{"type":28,"value":901},"Create a label (views)",{"type":23,"tag":231,"props":903,"children":904},{},[905],{"type":23,"tag":47,"props":906,"children":908},{"className":907},[],[909],{"type":28,"value":910},"orgs\u002Fcomponents\u002Fsettings\u002Fviews\u002Fwizards\u002Fcreate\u002FIndex.vue",{"type":23,"tag":231,"props":912,"children":913},{},[914],{"type":28,"value":915},"name → filters → members",{"type":23,"tag":231,"props":917,"children":918},{},[919,921,926,927,932],{"type":28,"value":920},"tabs, ",{"type":23,"tag":47,"props":922,"children":924},{"className":923},[],[925],{"type":28,"value":502},{"type":28,"value":54},{"type":23,"tag":47,"props":928,"children":930},{"className":929},[],[931],{"type":28,"value":509},{"type":28,"value":933}," (each step's own form advances), Complete",{"type":23,"tag":209,"props":935,"children":936},{},[937,942,951,956],{"type":23,"tag":231,"props":938,"children":939},{},[940],{"type":28,"value":941},"Configure MCP client",{"type":23,"tag":231,"props":943,"children":944},{},[945],{"type":23,"tag":47,"props":946,"children":948},{"className":947},[],[949],{"type":28,"value":950},"orgs\u002Fcomponents\u002Fsettings\u002Fmcp\u002FConfigure.vue",{"type":23,"tag":231,"props":952,"children":953},{},[954],{"type":28,"value":955},"choose client → instructions",{"type":23,"tag":231,"props":957,"children":958},{},[959,964],{"type":23,"tag":47,"props":960,"children":962},{"className":961},[],[963],{"type":28,"value":502},{"type":28,"value":965}," (picking a client advances), Finish",{"type":23,"tag":209,"props":967,"children":968},{},[969,974,983,988],{"type":23,"tag":231,"props":970,"children":971},{},[972],{"type":28,"value":973},"Onboarding preferences",{"type":23,"tag":231,"props":975,"children":976},{},[977],{"type":23,"tag":47,"props":978,"children":980},{"className":979},[],[981],{"type":28,"value":982},"orgs\u002Fcomponents\u002Fonboarding\u002Fpreferences\u002FIndex.vue",{"type":23,"tag":231,"props":984,"children":985},{},[986],{"type":28,"value":987},"capabilities → hosting",{"type":23,"tag":231,"props":989,"children":990},{},[991,996],{"type":23,"tag":47,"props":992,"children":994},{"className":993},[],[995],{"type":28,"value":443},{"type":28,"value":997}," on hosting. bob-wire c15 called these the \"highest-leverage empty shell\".",{"type":23,"tag":195,"props":999,"children":1001},{"id":1000},"what-it-hands-c125",[1002],{"type":28,"value":15},{"type":23,"tag":31,"props":1004,"children":1005},{},[1006,1016,1038,1048,1058],{"type":23,"tag":35,"props":1007,"children":1008},{},[1009,1014],{"type":23,"tag":39,"props":1010,"children":1011},{},[1012],{"type":28,"value":1013},"A step is data.",{"type":28,"value":1015}," An id, a title and per-step overrides. A tour step can be the same shape plus a page, a target and a condition.",{"type":23,"tag":35,"props":1017,"children":1018},{},[1019,1024,1025,1030,1031,1036],{"type":23,"tag":39,"props":1020,"children":1021},{},[1022],{"type":28,"value":1023},"Waiting is a mode.",{"type":28,"value":45},{"type":23,"tag":47,"props":1026,"children":1028},{"className":1027},[],[1029],{"type":28,"value":436},{"type":28,"value":768},{"type":23,"tag":47,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":28,"value":451},{"type":28,"value":1037}," holds a step until the world confirms it. That is the mechanism for journey progress from real state rather than ticked boxes (J2 deploy: \"N of M endpoints reporting\").",{"type":23,"tag":35,"props":1039,"children":1040},{},[1041,1046],{"type":23,"tag":39,"props":1042,"children":1043},{},[1044],{"type":28,"value":1045},"The edu slot is where the documentation already lived.",{"type":28,"value":1047}," Every step had a place for the why, so the kit already holds \"the UI becomes the documentation\" in small.",{"type":23,"tag":35,"props":1049,"children":1050},{},[1051,1056],{"type":23,"tag":39,"props":1052,"children":1053},{},[1054],{"type":28,"value":1055},"It lives inside one container.",{"type":28,"value":1057}," Each flow mounts the wizard in a page region: an empty state, the install page, a settings panel. A tour must cross pages and point at things outside its box, and that is the gap c125 fills.",{"type":23,"tag":35,"props":1059,"children":1060},{},[1061,1066,1067,1072],{"type":23,"tag":39,"props":1062,"children":1063},{},[1064],{"type":28,"value":1065},"Advancing from the content.",{"type":28,"value":45},{"type":23,"tag":47,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":28,"value":502},{"type":28,"value":1073}," lets a step's own choice move the wizard. That is the right default for selection routines, and for tour steps that wait on the user doing the thing.",{"type":23,"tag":195,"props":1075,"children":1077},{"id":1076},"the-richer-radar-branch-originmask-image",[1078,1080,1086],{"type":28,"value":1079},"The richer radar (branch ",{"type":23,"tag":47,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":28,"value":1085},"origin\u002Fmask-image",{"type":28,"value":248},{"type":23,"tag":24,"props":1088,"children":1089},{},[1090,1092,1097,1099,1105],{"type":28,"value":1091},"Mark (2026-10-27): \"I had a branch a looong time ago that added a more sophisticated radar.\" It's app.qpoint.io ",{"type":23,"tag":47,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":28,"value":1085},{"type":28,"value":1098},", two unmerged commits on top of ",{"type":23,"tag":47,"props":1100,"children":1102},{"className":1101},[],[1103],{"type":28,"value":1104},"82e68bf",{"type":28,"value":1106}," (Wizard Refactor \u002F Radar improvement, #77):",{"type":23,"tag":31,"props":1108,"children":1109},{},[1110,1172],{"type":23,"tag":35,"props":1111,"children":1112},{},[1113,1119,1121,1127,1129,1135,1137,1143,1144,1150,1151,1157,1158,1164,1165,1171],{"type":23,"tag":47,"props":1114,"children":1116},{"className":1115},[],[1117],{"type":28,"value":1118},"d82388d",{"type":28,"value":1120}," (2024-06-05), ",{"type":23,"tag":1122,"props":1123,"children":1124},"em",{},[1125],{"type":28,"value":1126},"EXPERIMENTAL: trying a low-fi image masking technique",{"type":28,"value":1128},". It adds ",{"type":23,"tag":47,"props":1130,"children":1132},{"className":1131},[],[1133],{"type":28,"value":1134},"components\u002Fwizard\u002FRadar.vue",{"type":28,"value":1136}," and five radar layers as SVG and @3x PNG: ",{"type":23,"tag":47,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":28,"value":1142},"radar-bg-lines",{"type":28,"value":261},{"type":23,"tag":47,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":28,"value":1149},"radar-fat-lines",{"type":28,"value":261},{"type":23,"tag":47,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":28,"value":1156},"radar-mask",{"type":28,"value":261},{"type":23,"tag":47,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":28,"value":1163},"radar-mask-3",{"type":28,"value":261},{"type":23,"tag":47,"props":1166,"children":1168},{"className":1167},[],[1169],{"type":28,"value":1170},"radar-mask-fat",{"type":28,"value":143},{"type":23,"tag":35,"props":1173,"children":1174},{},[1175,1181,1182,1187,1188,1194],{"type":23,"tag":47,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":28,"value":1180},"0bfe673",{"type":28,"value":1120},{"type":23,"tag":1122,"props":1183,"children":1184},{},[1185],{"type":28,"value":1186},"Full svg use",{"type":28,"value":1128},{"type":23,"tag":47,"props":1189,"children":1191},{"className":1190},[],[1192],{"type":28,"value":1193},"bg-lines-human",{"type":28,"value":1195}," and moves Radar to SVGs.",{"type":23,"tag":24,"props":1197,"children":1198},{},[1199,1201,1206,1208,1213,1215,1221,1223,1229],{"type":28,"value":1200},"Radar is a black disc with two layers turning at different speeds: ",{"type":23,"tag":47,"props":1202,"children":1204},{"className":1203},[],[1205],{"type":28,"value":1193},{"type":28,"value":1207}," every 12 s, under the ",{"type":23,"tag":47,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":28,"value":1163},{"type":28,"value":1214}," sweep (arm, rings, centre dot) every 6 s. PingListener drops the single spinning ",{"type":23,"tag":47,"props":1216,"children":1218},{"className":1217},[],[1219],{"type":28,"value":1220},"radar.svg",{"type":28,"value":1222}," for ",{"type":23,"tag":47,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":28,"value":1228},"\u003CWizardRadar \u002F>",{"type":28,"value":1230},", and its fourth ping moves from 1.35 s to 1.3 s.",{"type":23,"tag":24,"props":1232,"children":1233},{},[1234,1236,1242,1244,1250,1252,1258,1260,1266,1268,1273,1275,1281],{"type":28,"value":1235},"In the replica, ",{"type":23,"tag":47,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":28,"value":1241},"ReplicasWizardRadar",{"type":28,"value":1243}," is the branch tip copied verbatim except for its image paths, and ",{"type":23,"tag":47,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":28,"value":1249},"ReplicasWizardPingListener",{"type":28,"value":1251}," carries the branch's change. All twelve branch assets are in ",{"type":23,"tag":47,"props":1253,"children":1255},{"className":1254},[],[1256],{"type":28,"value":1257},"app\u002Fassets\u002Fimages\u002Fwizard\u002Fmask-image\u002F",{"type":28,"value":1259}," (SVG, plus @3x PNG in ",{"type":23,"tag":47,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":28,"value":1265},"3x\u002F",{"type":28,"value":1267},"), so the unused masks and line sets are there to try. The shipped ",{"type":23,"tag":47,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":28,"value":1220},{"type":28,"value":1274}," stays in ",{"type":23,"tag":47,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":28,"value":1280},"app\u002Fassets\u002Fimages\u002Fwizard\u002F",{"type":28,"value":1282}," for comparison.",{"type":23,"tag":195,"props":1284,"children":1286},{"id":1285},"found-while-copying",[1287],{"type":28,"value":17},{"type":23,"tag":31,"props":1289,"children":1290},{},[1291,1335,1355,1374,1423],{"type":23,"tag":35,"props":1292,"children":1293},{},[1294,1296,1302,1304,1310,1312,1318,1320,1325,1327,1333],{"type":28,"value":1295},"In app.qpoint.io, Continue's ",{"type":23,"tag":47,"props":1297,"children":1299},{"className":1298},[],[1300],{"type":28,"value":1301},"btn-outline",{"type":28,"value":1303}," loses to ",{"type":23,"tag":47,"props":1305,"children":1307},{"className":1306},[],[1308],{"type":28,"value":1309},"UxButton",{"type":28,"value":1311},"'s ",{"type":23,"tag":47,"props":1313,"children":1315},{"className":1314},[],[1316],{"type":28,"value":1317},"bg-grape-600",{"type":28,"value":1319},": the layer's ",{"type":23,"tag":47,"props":1321,"children":1323},{"className":1322},[],[1324],{"type":28,"value":1309},{"type":28,"value":1326}," gained ",{"type":23,"tag":47,"props":1328,"children":1330},{"className":1329},[],[1331],{"type":28,"value":1332},"kind=\"stroke\"",{"type":28,"value":1334}," for the outline look. So it reads grape on grape there. On the design site the CSS order lets the outline win.",{"type":23,"tag":35,"props":1336,"children":1337},{},[1338,1340,1346,1348,1354],{"type":28,"value":1339},"The ",{"type":23,"tag":47,"props":1341,"children":1343},{"className":1342},[],[1344],{"type":28,"value":1345},"callBack",{"type":28,"value":1347}," prop is declared but never read; the code reads ",{"type":23,"tag":47,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":28,"value":1353},"props.callback",{"type":28,"value":143},{"type":23,"tag":35,"props":1356,"children":1357},{},[1358,1364,1366,1372],{"type":23,"tag":47,"props":1359,"children":1361},{"className":1360},[],[1362],{"type":28,"value":1363},"pingConfirm",{"type":28,"value":1365}," (the listener's ",{"type":23,"tag":47,"props":1367,"children":1369},{"className":1368},[],[1370],{"type":28,"value":1371},"listenConfirmCallback",{"type":28,"value":1373},") is commented out. Confirmation un-blocks Continue but never advances on its own.",{"type":23,"tag":35,"props":1375,"children":1376},{},[1377,1378,1384,1385,1391,1392,1398,1400,1406,1407,1413,1415,1421],{"type":28,"value":1339},{"type":23,"tag":47,"props":1379,"children":1381},{"className":1380},[],[1382],{"type":28,"value":1383},"\u002Fdev\u002Fwizards\u002Finstall-qtap",{"type":28,"value":261},{"type":23,"tag":47,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":28,"value":1390},"connect-an-app",{"type":28,"value":54},{"type":23,"tag":47,"props":1393,"children":1395},{"className":1394},[],[1396],{"type":28,"value":1397},"deploy-qproxy",{"type":28,"value":1399}," demos no longer resolve their components (",{"type":23,"tag":47,"props":1401,"children":1403},{"className":1402},[],[1404],{"type":28,"value":1405},"WizardsConnectApp",{"type":28,"value":261},{"type":23,"tag":47,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":28,"value":1412},"WizardsInstallQproxy",{"type":28,"value":1414},"). Only ",{"type":23,"tag":47,"props":1416,"children":1418},{"className":1417},[],[1419],{"type":28,"value":1420},"\u002Fdev\u002Fwizards",{"type":28,"value":1422}," (A–D) still runs, and the real flows sit behind sign-in.",{"type":23,"tag":35,"props":1424,"children":1425},{},[1426,1428,1434,1436,1442,1444,1450,1452,1458],{"type":28,"value":1427},"app.qpoint.io's dev server conflicts with itself on :3300: the content watcher (",{"type":23,"tag":47,"props":1429,"children":1431},{"className":1430},[],[1432],{"type":28,"value":1433},"watch.port: 3300",{"type":28,"value":1435},") holds the IPv6 listener, so ",{"type":23,"tag":47,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":28,"value":1441},"localhost:3300",{"type":28,"value":1443}," hangs. Run it with ",{"type":23,"tag":47,"props":1445,"children":1447},{"className":1446},[],[1448],{"type":28,"value":1449},"--port 3301",{"type":28,"value":1451}," (launch config ",{"type":23,"tag":47,"props":1453,"children":1455},{"className":1454},[],[1456],{"type":28,"value":1457},"app-qpoint-io",{"type":28,"value":1459},").",{"type":23,"tag":195,"props":1461,"children":1463},{"id":1462},"replica-changes-everything-else-is-verbatim",[1464],{"type":28,"value":18},{"type":23,"tag":31,"props":1466,"children":1467},{},[1468,1498,1510],{"type":23,"tag":35,"props":1469,"children":1470},{},[1471,1476,1478,1484,1486,1491,1492,1497],{"type":23,"tag":47,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":28,"value":677},{"type":28,"value":1477}," became ",{"type":23,"tag":47,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":28,"value":1483},"ReplicasWizardLinkBack",{"type":28,"value":1485},", and ",{"type":23,"tag":47,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":28,"value":612},{"type":28,"value":1477},{"type":23,"tag":47,"props":1493,"children":1495},{"className":1494},[],[1496],{"type":28,"value":1249},{"type":28,"value":143},{"type":23,"tag":35,"props":1499,"children":1500},{},[1501,1503,1508],{"type":28,"value":1502},"PingListener's images were copied to ",{"type":23,"tag":47,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":28,"value":1280},{"type":28,"value":1509},", and its style block is now scoped.",{"type":23,"tag":35,"props":1511,"children":1512},{},[1513,1519,1521,1527],{"type":23,"tag":47,"props":1514,"children":1516},{"className":1515},[],[1517],{"type":28,"value":1518},"sequin.js",{"type":28,"value":1520}," dropped its closing ",{"type":23,"tag":47,"props":1522,"children":1524},{"className":1523},[],[1525],{"type":28,"value":1526},"window.Sequin = Sequin",{"type":28,"value":1528},", because the design site renders on the server.",1794599466544]