[{"data":1,"prerenderedAt":1767},["ShallowReactive",2],{"$fcJr4F5aexN1hzR70ScrDhcEHYGYXe6BKZWdN8RVAzVM":3},{"newThing":4,"project":5,"cycle":9,"sections":24,"threads":1594,"otherDocs":1595,"documents":1597,"images":1601,"archiveItems":1737,"links":1762},"The page title joins the sticky band: the real UxPageTitle pins on row 1 beside the Filter and sub navs pin in row 2; scrolling down compacts title (15px), Filter (values only) and pills, scrolling up grows them to an in-between set (title 20px); a two-layer shadow lifts the band; nothing in the band moves the page (every mode flip Δ0)",{"id":6,"label":7,"liveBase":8},"design","Design",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":17,"hasPickup":19,"hasInitialPrompt":23},"c106",106,"c106.sticky-title","sticky-title","Sticky Title","The page title (layer `UxPageTitle` \u002F Fable `PageHeader`, not the actor headers) joins c104's sticky band, which becomes two rows with scroll-direction modes.","archived","2026-10-02","evolution (c104's band grows rows and modes) with formula (the iOS large-title pattern)",false,"\u002Fcycles\u002Fdesign\u002Fc106-detail-down.png",23,2,true,[25,39,57,123,1277],{"key":26,"title":27,"empty":19,"ast":28},"why","Why",{"type":29,"children":30},"root",[31],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","c104 pins the global filter and jump pills as one band. The page title still scrolls away, so a long page loses its name. Mark wants the title in the band: compact while scrolling down (\"tidy, out of the way\"), with room under it for sticky sub navs, and an in-between set while scrolling up.",{"key":40,"title":41,"empty":19,"ast":42},"objective","Objective",{"type":29,"children":43},[44],{"type":32,"tag":33,"props":45,"children":46},{},[47,49,55],{"type":37,"value":48},"Row 1 = the compact title (crumbs + title) and the filter; row 2 = any sub nav that registers. Modes ",{"type":32,"tag":50,"props":51,"children":52},"em",{},[53],{"type":37,"value":54},"rest · down · up",{"type":37,"value":56}," by scroll direction. Nothing in the band may move page content.",{"key":58,"title":59,"empty":19,"ast":60},"scope","Scope",{"type":29,"children":61},[62],{"type":32,"tag":63,"props":64,"children":65},"ul",{},[66,113,118],{"type":32,"tag":67,"props":68,"children":69},"li",{},[70,72,79,81,87,89,95,97,103,105,111],{"type":37,"value":71},"Layer: ",{"type":32,"tag":73,"props":74,"children":76},"code",{"className":75},[],[77],{"type":37,"value":78},"useStickyBand",{"type":37,"value":80}," rows + mode; ",{"type":32,"tag":73,"props":82,"children":84},{"className":83},[],[85],{"type":37,"value":86},"UxStickyBand",{"type":37,"value":88}," row 1; ",{"type":32,"tag":73,"props":90,"children":92},{"className":91},[],[93],{"type":37,"value":94},"UxPageTitle",{"type":37,"value":96}," and ",{"type":32,"tag":73,"props":98,"children":100},{"className":99},[],[101],{"type":37,"value":102},"NavJumpPills",{"type":37,"value":104}," join a mounted band automatically (opt-out); a compact ",{"type":32,"tag":73,"props":106,"children":108},{"className":107},[],[109],{"type":37,"value":110},"Filter",{"type":37,"value":112}," look.",{"type":32,"tag":67,"props":114,"children":115},{},[116],{"type":37,"value":117},"Fable: no page changes beyond the layer; SessionReading's switch joins row 2.",{"type":32,"tag":67,"props":119,"children":120},{},[121],{"type":37,"value":122},"Not the actor\u002Fhero headers.",{"key":124,"title":125,"empty":19,"ast":126},"key-changes","Key Changes",{"type":29,"children":127},[128,176,211,219,357,365,472,480,836,844,1164,1181],{"type":32,"tag":33,"props":129,"children":130},{},[131,137,139,145,147,153,155,161,163,174],{"type":32,"tag":132,"props":133,"children":134},"strong",{},[135],{"type":37,"value":136},"Phase 0 mock (2026-10-02):",{"type":37,"value":138}," ",{"type":32,"tag":73,"props":140,"children":142},{"className":141},[],[143],{"type":37,"value":144},"\u002Fpages\u002Fsticky-title",{"type":37,"value":146},", design-local (",{"type":32,"tag":73,"props":148,"children":150},{"className":149},[],[151],{"type":37,"value":152},"useStickyTitleBand",{"type":37,"value":154},", ",{"type":32,"tag":73,"props":156,"children":158},{"className":157},[],[159],{"type":37,"value":160},"components\u002Fsticky-title\u002F",{"type":37,"value":162},"). Verified headless: detail band 91 px down · 129 px up, listing 53 · 81, headers pin at the band's height in every mode, jumps land under the compact band, every mode flip Δpage 0 · Δcontent 0. Mark's mid-build question (no toggle — detect sub navs) → registration, and components auto-join a mounted band in Phase 1. Details in ",{"type":32,"tag":164,"props":165,"children":167},"a",{"href":166},"\u002Fcycles\u002Fdesign\u002Fc106\u002Fdoc\u002Fplan",[168],{"type":32,"tag":73,"props":169,"children":171},{"className":170},[],[172],{"type":37,"value":173},"plan.md",{"type":37,"value":175}," § Phase 0.",{"type":32,"tag":33,"props":177,"children":178},{},[179,184,186,191,193,199,201,209],{"type":32,"tag":132,"props":180,"children":181},{},[182],{"type":37,"value":183},"Phase 0 rework (2026-10-02):",{"type":37,"value":185}," the real ",{"type":32,"tag":73,"props":187,"children":189},{"className":188},[],[190],{"type":37,"value":94},{"type":37,"value":192}," pins instead of a teleported copy (Mark: use the actual title, as the Filter is used): a zero-height sticky box with a bottom margin reserving its rest height, restyled by mode. Re-verified, every flip Δ0 (after fixing a mid-animation rest measurement that moved the page 8 px). Fable's ",{"type":32,"tag":73,"props":194,"children":196},{"className":195},[],[197],{"type":37,"value":198},"PageHeader",{"type":37,"value":200}," wrapper needs flattening in the port. ",{"type":32,"tag":164,"props":202,"children":203},{"href":166},[204],{"type":32,"tag":73,"props":205,"children":207},{"className":206},[],[208],{"type":37,"value":173},{"type":37,"value":210}," § Phase 0 rework.",{"type":32,"tag":33,"props":212,"children":213},{},[214],{"type":32,"tag":132,"props":215,"children":216},{},[217],{"type":37,"value":218},"Mock refinements + cleanup (2026-10-02):",{"type":32,"tag":63,"props":220,"children":221},{},[222,247,257,267,347],{"type":32,"tag":67,"props":223,"children":224},{},[225,230,232,237,239,245],{"type":32,"tag":132,"props":226,"children":227},{},[228],{"type":37,"value":229},"Rest title:",{"type":37,"value":231}," at Fable ",{"type":32,"tag":73,"props":233,"children":235},{"className":234},[],[236],{"type":37,"value":198},{"type":37,"value":238}," size (28px, modelled on ",{"type":32,"tag":73,"props":240,"children":242},{"className":241},[],[243],{"type":37,"value":244},":3032\u002Finventory\u002Fharnesses",{"type":37,"value":246},"), on both page kinds.",{"type":32,"tag":67,"props":248,"children":249},{},[250,255],{"type":32,"tag":132,"props":251,"children":252},{},[253],{"type":37,"value":254},"No load jump:",{"type":37,"value":256}," the title box is an ordinary block at rest and freezes its own height only while pinned; the first paint (no JS) matches the loaded page to the pixel.",{"type":32,"tag":67,"props":258,"children":259},{},[260,265],{"type":32,"tag":132,"props":261,"children":262},{},[263],{"type":37,"value":264},"Band shadow",{"type":37,"value":266}," (Mark): two gradients off the backing's bottom edge, 5px at 0.18 and 20px at 0.08, black 100% → 0% alpha.",{"type":32,"tag":67,"props":268,"children":269},{},[270,275],{"type":32,"tag":132,"props":271,"children":272},{},[273],{"type":37,"value":274},"Code cleanup:",{"type":32,"tag":63,"props":276,"children":277},{},[278,283,296,316,342],{"type":32,"tag":67,"props":279,"children":280},{},[281],{"type":37,"value":282},"shared geometry constants in the composable;",{"type":32,"tag":67,"props":284,"children":285},{},[286,288,294],{"type":37,"value":287},"the Band owns publishing (",{"type":32,"tag":73,"props":289,"children":291},{"className":290},[],[292],{"type":37,"value":293},"attach",{"type":37,"value":295},");",{"type":32,"tag":67,"props":297,"children":298},{},[299,301,307,309,315],{"type":37,"value":300},"the Filter plumbing moved to ",{"type":32,"tag":73,"props":302,"children":304},{"className":303},[],[305],{"type":37,"value":306},"StickyTitleFilterBar",{"type":37,"value":308}," (a replica of Fable's ",{"type":32,"tag":73,"props":310,"children":312},{"className":311},[],[313],{"type":37,"value":314},"GlobalFilterBar",{"type":37,"value":295},{"type":32,"tag":67,"props":317,"children":318},{},[319,321,327,328,334,335,341],{"type":37,"value":320},"names say what they do (",{"type":32,"tag":73,"props":322,"children":324},{"className":323},[],[325],{"type":37,"value":326},"titlePinned",{"type":37,"value":154},{"type":32,"tag":73,"props":329,"children":331},{"className":330},[],[332],{"type":37,"value":333},"reportTitle",{"type":37,"value":154},{"type":32,"tag":73,"props":336,"children":338},{"className":337},[],[339],{"type":37,"value":340},"showBacking",{"type":37,"value":295},{"type":32,"tag":67,"props":343,"children":344},{},[345],{"type":37,"value":346},"each file documents its role and its Phase 1 counterpart.",{"type":32,"tag":67,"props":348,"children":349},{},[350,355],{"type":32,"tag":132,"props":351,"children":352},{},[353],{"type":37,"value":354},"Re-verified headless",{"type":37,"value":356}," after a dev-server restart (its watcher had stopped tracking the directory): every flip Δ0, headers under the band, jumps 16px under the compact band, no console errors.",{"type":32,"tag":33,"props":358,"children":359},{},[360],{"type":32,"tag":132,"props":361,"children":362},{},[363],{"type":37,"value":364},"Design refinements + documentation (2026-10-02):",{"type":32,"tag":63,"props":366,"children":367},{},[368,378,412,452],{"type":32,"tag":67,"props":369,"children":370},{},[371,376],{"type":32,"tag":132,"props":372,"children":373},{},[374],{"type":37,"value":375},"Hairline kept while pinned",{"type":37,"value":377}," (Mark: \"keep the hairline on the title … during scroll\"); its padding tightens to 6px to fit the row.",{"type":32,"tag":67,"props":379,"children":380},{},[381,386,388,394,396,402,404,410],{"type":32,"tag":132,"props":382,"children":383},{},[384],{"type":37,"value":385},"Motion",{"type":37,"value":387}," (Mark: \"slow down the transitions, especially when scrolling up … quint-in-out\"; then \"slow to 1s, 2s\"): one easing, ",{"type":32,"tag":73,"props":389,"children":391},{"className":390},[],[392],{"type":37,"value":393},"cubic-bezier(0.83, 0, 0.17, 1)",{"type":37,"value":395},". Compacting takes 1s and growing takes 2s, published as ",{"type":32,"tag":73,"props":397,"children":399},{"className":398},[],[400],{"type":37,"value":401},"--st-band-dur",{"type":37,"value":403}," \u002F ",{"type":32,"tag":73,"props":405,"children":407},{"className":406},[],[408],{"type":37,"value":409},"--st-band-ease",{"type":37,"value":411}," and read by the backing, title, pills and table headers. Sampled headless: the band goes 129 → 91px over ~1s scrolling down, and 93 → 129px over ~2s scrolling up.",{"type":32,"tag":67,"props":413,"children":414},{},[415,420,421,427,429,434,436,442,444,450],{"type":32,"tag":132,"props":416,"children":417},{},[418],{"type":37,"value":419},"Captures:",{"type":37,"value":138},{"type":32,"tag":73,"props":422,"children":424},{"className":423},[],[425],{"type":37,"value":426},"scripts\u002Fshot-programs\u002Fc106-sticky-title.json",{"type":37,"value":428}," (thread ",{"type":32,"tag":50,"props":430,"children":431},{},[432],{"type":37,"value":433},"Phase 0 mock",{"type":37,"value":435},", subject ",{"type":32,"tag":73,"props":437,"children":439},{"className":438},[],[440],{"type":37,"value":441},"page\u002Fsticky-title",{"type":37,"value":443},"), 8 states: detail rest \u002F down \u002F up \u002F jump \u002F filter-compact off; listing rest \u002F down \u002F up. Files are ",{"type":32,"tag":73,"props":445,"children":447},{"className":446},[],[448],{"type":37,"value":449},"public\u002Fcycles\u002Fdesign\u002Fc106-*.png",{"type":37,"value":451},".",{"type":32,"tag":67,"props":453,"children":454},{},[455,460,461,471],{"type":32,"tag":132,"props":456,"children":457},{},[458],{"type":37,"value":459},"Archive:",{"type":37,"value":138},{"type":32,"tag":164,"props":462,"children":464},{"href":463},"..\u002F..\u002Fcontent\u002Farchive\u002F2026-q4\u002F2026-10-02-c106-sticky-title.md",[465],{"type":32,"tag":73,"props":466,"children":468},{"className":467},[],[469],{"type":37,"value":470},"2026-10-02-c106-sticky-title",{"type":37,"value":451},{"type":32,"tag":33,"props":473,"children":474},{},[475],{"type":32,"tag":132,"props":476,"children":477},{},[478],{"type":37,"value":479},"Phase 1 + 2 — the layer and its docs (2026-10-02):",{"type":32,"tag":63,"props":481,"children":482},{},[483,661,692,715,770,808,818],{"type":32,"tag":67,"props":484,"children":485},{},[486,497,499,504,506,512,513,519,520,526,528],{"type":32,"tag":132,"props":487,"children":488},{},[489,491],{"type":37,"value":490},"Layer ",{"type":32,"tag":73,"props":492,"children":494},{"className":493},[],[495],{"type":37,"value":496},"6283ed9",{"type":37,"value":498}," (q-nuxt-layer, local, unreleased): ",{"type":32,"tag":73,"props":500,"children":502},{"className":501},[],[503],{"type":37,"value":78},{"type":37,"value":505}," is rebuilt around roles (",{"type":32,"tag":73,"props":507,"children":509},{"className":508},[],[510],{"type":37,"value":511},"claimTitle",{"type":37,"value":403},{"type":32,"tag":73,"props":514,"children":516},{"className":515},[],[517],{"type":37,"value":518},"registerFilter",{"type":37,"value":403},{"type":32,"tag":73,"props":521,"children":523},{"className":522},[],[524],{"type":37,"value":525},"registerNav",{"type":37,"value":527},") and two layouts.\n",{"type":32,"tag":63,"props":529,"children":530},{},[531,541,566,597,611,631,646],{"type":32,"tag":67,"props":532,"children":533},{},[534,539],{"type":32,"tag":132,"props":535,"children":536},{},[537],{"type":37,"value":538},"c104 (default):",{"type":37,"value":540}," the filter and the pills side by side. Current consumers are unchanged, apart from the new shadow and the 400ms fade.",{"type":32,"tag":67,"props":542,"children":543},{},[544,557,559,565],{"type":32,"tag":132,"props":545,"children":546},{},[547,549,555],{"type":37,"value":548},"c106 (",{"type":32,"tag":73,"props":550,"children":552},{"className":551},[],[553],{"type":37,"value":554},"\u003CUxStickyBand title>",{"type":37,"value":556},"):",{"type":37,"value":558}," the two-column band, with the scroll-direction mode and ",{"type":32,"tag":73,"props":560,"children":562},{"className":561},[],[563],{"type":37,"value":564},"STICKY_BAND.upRestyles = false",{"type":37,"value":451},{"type":32,"tag":67,"props":567,"children":568},{},[569,579,581,587,589,595],{"type":32,"tag":132,"props":570,"children":571},{},[572,577],{"type":32,"tag":73,"props":573,"children":575},{"className":574},[],[576],{"type":37,"value":94},{"type":37,"value":578},":",{"type":37,"value":580}," pins, freezes, restyles and settles; new ",{"type":32,"tag":73,"props":582,"children":584},{"className":583},[],[585],{"type":37,"value":586},"sticky",{"type":37,"value":588}," (opt-out) and ",{"type":32,"tag":73,"props":590,"children":592},{"className":591},[],[593],{"type":37,"value":594},"rowMinHeight",{"type":37,"value":596}," (replaces wrapper boxes).",{"type":32,"tag":67,"props":598,"children":599},{},[600,609],{"type":32,"tag":132,"props":601,"children":602},{},[603,608],{"type":32,"tag":73,"props":604,"children":606},{"className":605},[],[607],{"type":37,"value":102},{"type":37,"value":578},{"type":37,"value":610}," joins any mounted band; docks under the title and compacts.",{"type":32,"tag":67,"props":612,"children":613},{},[614,623,624,630],{"type":32,"tag":132,"props":615,"children":616},{},[617,622],{"type":32,"tag":73,"props":618,"children":620},{"className":619},[],[621],{"type":37,"value":110},{"type":37,"value":578},{"type":37,"value":138},{"type":32,"tag":73,"props":625,"children":627},{"className":626},[],[628],{"type":37,"value":629},"bandCompact",{"type":37,"value":451},{"type":32,"tag":67,"props":632,"children":633},{},[634,644],{"type":32,"tag":132,"props":635,"children":636},{},[637,643],{"type":32,"tag":73,"props":638,"children":640},{"className":639},[],[641],{"type":37,"value":642},"UxTableListHeader",{"type":37,"value":578},{"type":37,"value":645}," eases with the band.",{"type":32,"tag":67,"props":647,"children":648},{},[649,659],{"type":32,"tag":132,"props":650,"children":651},{},[652,658],{"type":32,"tag":73,"props":653,"children":655},{"className":654},[],[656],{"type":37,"value":657},"STICKY_BAND",{"type":37,"value":578},{"type":37,"value":660}," holds geometry and motion.",{"type":32,"tag":67,"props":662,"children":663},{},[664,669,671,677,679,684,686,691],{"type":32,"tag":132,"props":665,"children":666},{},[667],{"type":37,"value":668},"The band chooses the layout, not the pages.",{"type":37,"value":670}," The Fable app reads the layer live; with title-joining tied to the band's ",{"type":32,"tag":73,"props":672,"children":674},{"className":673},[],[675],{"type":37,"value":676},"title",{"type":37,"value":678}," prop, its pages keep the c104 band until the Phase 4 port adds ",{"type":32,"tag":73,"props":680,"children":682},{"className":681},[],[683],{"type":37,"value":676},{"type":37,"value":685}," to its layout and flattens ",{"type":32,"tag":73,"props":687,"children":689},{"className":688},[],[690],{"type":37,"value":198},{"type":37,"value":451},{"type":32,"tag":67,"props":693,"children":694},{},[695,707,708,713],{"type":32,"tag":132,"props":696,"children":697},{},[698,700,706],{"type":37,"value":699},"Mock on the layer (design ",{"type":32,"tag":73,"props":701,"children":703},{"className":702},[],[704],{"type":37,"value":705},"87e0c1ad",{"type":37,"value":556},{"type":37,"value":138},{"type":32,"tag":73,"props":709,"children":711},{"className":710},[],[712],{"type":37,"value":144},{"type":37,"value":714}," now composes the layer pieces exactly as the Fable shell will. The design-local replica is deleted. Same numbers verified: detail 81 → 90px (pills docked 48–80), listing 81 → 53px, up draws as down, jumps 16px under the band, every flip Δ0, no errors.",{"type":32,"tag":67,"props":716,"children":717},{},[718,730,731,736,738,743,745,750,751,756,757,762,763,768],{"type":32,"tag":132,"props":719,"children":720},{},[721,723,729],{"type":37,"value":722},"Docs (design ",{"type":32,"tag":73,"props":724,"children":726},{"className":725},[],[727],{"type":37,"value":728},"13a56842",{"type":37,"value":556},{"type":37,"value":138},{"type":32,"tag":73,"props":732,"children":734},{"className":733},[],[735],{"type":37,"value":86},{"type":37,"value":737}," is now the sticky-band guide — a live framed demo, setup, layouts, members, scrolling, consumer rules, variables and ",{"type":32,"tag":73,"props":739,"children":741},{"className":740},[],[742],{"type":37,"value":657},{"type":37,"value":744},". ",{"type":32,"tag":73,"props":746,"children":748},{"className":747},[],[749],{"type":37,"value":94},{"type":37,"value":154},{"type":32,"tag":73,"props":752,"children":754},{"className":753},[],[755],{"type":37,"value":102},{"type":37,"value":154},{"type":32,"tag":73,"props":758,"children":760},{"className":759},[],[761],{"type":37,"value":110},{"type":37,"value":96},{"type":32,"tag":73,"props":764,"children":766},{"className":765},[],[767],{"type":37,"value":642},{"type":37,"value":769}," document their band behaviour.",{"type":32,"tag":67,"props":771,"children":772},{},[773,777,778,784,785,790,792,798,800,806],{"type":32,"tag":132,"props":774,"children":775},{},[776],{"type":37,"value":419},{"type":37,"value":138},{"type":32,"tag":73,"props":779,"children":781},{"className":780},[],[782],{"type":37,"value":783},"scripts\u002Fshot-programs\u002Fc106-sticky-title-p1.json",{"type":37,"value":428},{"type":32,"tag":50,"props":786,"children":787},{},[788],{"type":37,"value":789},"Phase 1 — on the layer",{"type":37,"value":791},"), 8 mock states (",{"type":32,"tag":73,"props":793,"children":795},{"className":794},[],[796],{"type":37,"value":797},"c106-p1-*",{"type":37,"value":799},") plus the band guide (",{"type":32,"tag":73,"props":801,"children":803},{"className":802},[],[804],{"type":37,"value":805},"component\u002Fux-sticky-band",{"type":37,"value":807},"). The Phase 0 captures stay as the earlier thread.",{"type":32,"tag":67,"props":809,"children":810},{},[811,816],{"type":32,"tag":132,"props":812,"children":813},{},[814],{"type":37,"value":815},"Dev-server lesson:",{"type":37,"value":817}," a fresh page load can be served stale while open tabs get hot updates. Removing a layer composable export needs a restart (Nuxt's auto-import list goes stale). Recorded in memory.",{"type":32,"tag":67,"props":819,"children":820},{},[821,826,828,834],{"type":32,"tag":132,"props":822,"children":823},{},[824],{"type":37,"value":825},"Not yet:",{"type":37,"value":827}," Phase 3 (release 0.9.26) and Phase 4 (Fable port; ",{"type":32,"tag":73,"props":829,"children":831},{"className":830},[],[832],{"type":37,"value":833},":3032",{"type":37,"value":835}," was down at the time, so Fable is unverified against the new layer — its dev server will need a restart).",{"type":32,"tag":33,"props":837,"children":838},{},[839],{"type":32,"tag":132,"props":840,"children":841},{},[842],{"type":37,"value":843},"Phase 3 + 4 — release and the qdash port (2026-10-02):",{"type":32,"tag":63,"props":845,"children":846},{},[847,912,1004,1022,1092,1131],{"type":32,"tag":67,"props":848,"children":849},{},[850,855,857,863,865,871,873,879,881,887,889,895,897,903,905,911],{"type":32,"tag":132,"props":851,"children":852},{},[853],{"type":37,"value":854},"q-nuxt-layer 0.9.26",{"type":37,"value":856}," (",{"type":32,"tag":73,"props":858,"children":860},{"className":859},[],[861],{"type":37,"value":862},"d52aa1c",{"type":37,"value":864},", tag pushed, publish green; migration notes in the layer CLAUDE.md). Lockfiles at 0.9.26: design ",{"type":32,"tag":73,"props":866,"children":868},{"className":867},[],[869],{"type":37,"value":870},"5d34901d",{"type":37,"value":872},", bob-wire ",{"type":32,"tag":73,"props":874,"children":876},{"className":875},[],[877],{"type":37,"value":878},"cc9daed",{"type":37,"value":880},", app.qpoint.io ",{"type":32,"tag":73,"props":882,"children":884},{"className":883},[],[885],{"type":37,"value":886},"a7a231a",{"type":37,"value":888},", www ",{"type":32,"tag":73,"props":890,"children":892},{"className":891},[],[893],{"type":37,"value":894},"28fbce3",{"type":37,"value":896},", qflow ",{"type":32,"tag":73,"props":898,"children":900},{"className":899},[],[901],{"type":37,"value":902},"e53ab0c",{"type":37,"value":904},", qcontrol ui ",{"type":32,"tag":73,"props":906,"children":908},{"className":907},[],[909],{"type":37,"value":910},"2dacfeaa",{"type":37,"value":451},{"type":32,"tag":67,"props":913,"children":914},{},[915,920,922,928,929,935,937,943,945,951,953],{"type":32,"tag":132,"props":916,"children":917},{},[918],{"type":37,"value":919},"Port target moved:",{"type":37,"value":921}," c107 made the Fable app ",{"type":32,"tag":73,"props":923,"children":925},{"className":924},[],[926],{"type":37,"value":927},"qcontrol\u002Fcrates\u002Fqdash\u002Fui",{"type":37,"value":856},{"type":32,"tag":73,"props":930,"children":932},{"className":931},[],[933],{"type":37,"value":934},"feat\u002Fnew-pages",{"type":37,"value":936},", PR #713, ",{"type":32,"tag":73,"props":938,"children":940},{"className":939},[],[941],{"type":37,"value":942},":3030",{"type":37,"value":944},"). Port ",{"type":32,"tag":73,"props":946,"children":948},{"className":947},[],[949],{"type":37,"value":950},"d1f2e00d",{"type":37,"value":952},", local:\n",{"type":32,"tag":63,"props":954,"children":955},{},[956,966,991],{"type":32,"tag":67,"props":957,"children":958},{},[959,964],{"type":32,"tag":73,"props":960,"children":962},{"className":961},[],[963],{"type":37,"value":554},{"type":37,"value":965}," in the layout;",{"type":32,"tag":67,"props":967,"children":968},{},[969,974,976,981,983,989],{"type":32,"tag":73,"props":970,"children":972},{"className":971},[],[973],{"type":37,"value":198},{"type":37,"value":975}," a fragment (the title a direct child of the page; ",{"type":32,"tag":73,"props":977,"children":979},{"className":978},[],[980],{"type":37,"value":594},{"type":37,"value":982}," 44; an empty ",{"type":32,"tag":73,"props":984,"children":986},{"className":985},[],[987],{"type":37,"value":988},"mb-10",{"type":37,"value":990}," keeps the spacing);",{"type":32,"tag":67,"props":992,"children":993},{},[994,996,1002],{"type":37,"value":995},"13 detail pages drop ",{"type":32,"tag":73,"props":997,"children":999},{"className":998},[],[1000],{"type":37,"value":1001},":titleSize=\"15\"",{"type":37,"value":1003}," (full size at rest).",{"type":32,"tag":67,"props":1005,"children":1006},{},[1007,1012,1014,1020],{"type":32,"tag":132,"props":1008,"children":1009},{},[1010],{"type":37,"value":1011},"c108 was live in the same tree.",{"type":37,"value":1013}," My one-line layout change went in beside its uncommitted banner, and c108 committed first (",{"type":32,"tag":73,"props":1015,"children":1017},{"className":1016},[],[1018],{"type":37,"value":1019},"f76fa091",{"type":37,"value":1021},"), so the port sits on top of it.",{"type":32,"tag":67,"props":1023,"children":1024},{},[1025,1030,1032,1038,1040,1046,1048,1054,1056,1061,1063],{"type":32,"tag":132,"props":1026,"children":1027},{},[1028],{"type":37,"value":1029},"Verified on a temp server",{"type":37,"value":1031}," (an APFS clone at ",{"type":32,"tag":73,"props":1033,"children":1035},{"className":1034},[],[1036],{"type":37,"value":1037},"..\u002F.c106tmp",{"type":37,"value":1039}," on ",{"type":32,"tag":73,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":37,"value":1045},":3033",{"type":37,"value":1047},", the real layer, the ",{"type":32,"tag":73,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":37,"value":1053},":7882",{"type":37,"value":1055}," seed — ",{"type":32,"tag":73,"props":1057,"children":1059},{"className":1058},[],[1060],{"type":37,"value":942},{"type":37,"value":1062}," served stale modules and isn't this session's):\n",{"type":32,"tag":63,"props":1064,"children":1065},{},[1066,1071,1076,1081],{"type":32,"tag":67,"props":1067,"children":1068},{},[1069],{"type":37,"value":1070},"listing pinned band 53px;",{"type":32,"tag":67,"props":1072,"children":1073},{},[1074],{"type":37,"value":1075},"Team detail 90px, pills docked 48–80, table header at 90;",{"type":32,"tag":67,"props":1077,"children":1078},{},[1079],{"type":37,"value":1080},"a jump lands 16px under the band; the page never moves; no errors;",{"type":32,"tag":67,"props":1082,"children":1083},{},[1084,1090],{"type":32,"tag":73,"props":1085,"children":1087},{"className":1086},[],[1088],{"type":37,"value":1089},"npm test",{"type":37,"value":1091}," 566 + bible-check clean.",{"type":32,"tag":67,"props":1093,"children":1094},{},[1095,1100,1102,1107,1109,1115,1116,1122,1124,1129],{"type":32,"tag":132,"props":1096,"children":1097},{},[1098],{"type":37,"value":1099},"Caught on the way:",{"type":37,"value":1101}," a scripted ",{"type":32,"tag":73,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":37,"value":198},{"type":37,"value":1108}," rewrite split the file at the inner ",{"type":32,"tag":73,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":37,"value":1114},"#right",{"type":37,"value":138},{"type":32,"tag":73,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":37,"value":1121},"\u003C\u002Ftemplate>",{"type":37,"value":1123}," and left invalid Vue. Tests and bible-check don't compile it; the temp server did, and an SFC compile check now runs over ",{"type":32,"tag":73,"props":1125,"children":1127},{"className":1126},[],[1128],{"type":37,"value":198},{"type":37,"value":1130},", the layout and the 42 pages that use it.",{"type":32,"tag":67,"props":1132,"children":1133},{},[1134,1139],{"type":32,"tag":132,"props":1135,"children":1136},{},[1137],{"type":37,"value":1138},"Open:",{"type":32,"tag":63,"props":1140,"children":1141},{},[1142,1152],{"type":32,"tag":67,"props":1143,"children":1144},{},[1145,1150],{"type":32,"tag":132,"props":1146,"children":1147},{},[1148],{"type":37,"value":1149},"Detail pages now show the entity name twice at full size",{"type":37,"value":1151}," — the page title and the actor header's hero. Mark to rule.",{"type":32,"tag":67,"props":1153,"children":1154},{},[1155,1157,1162],{"type":37,"value":1156},"Push the qcontrol and design commits; deploy the design site; restart ",{"type":32,"tag":73,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":37,"value":942},{"type":37,"value":1163}," to see the port in the live app.",{"type":32,"tag":33,"props":1165,"children":1166},{},[1167,1172,1174,1179],{"type":32,"tag":132,"props":1168,"children":1169},{},[1170],{"type":37,"value":1171},"Polish on the live app — 0.9.27 (2026-10-02):",{"type":37,"value":1173}," Mark's pass on the ported band, tuned on the ",{"type":32,"tag":73,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":37,"value":1045},{"type":37,"value":1180}," temp server.",{"type":32,"tag":63,"props":1182,"children":1183},{},[1184,1202,1227,1260],{"type":32,"tag":67,"props":1185,"children":1186},{},[1187,1192,1194,1200],{"type":32,"tag":132,"props":1188,"children":1189},{},[1190],{"type":37,"value":1191},"The backing fades in at its height",{"type":37,"value":1193}," instead of sliding down from the top; in a titled band it waits for the title, and its height animates only once fully in (layer ",{"type":32,"tag":73,"props":1195,"children":1197},{"className":1196},[],[1198],{"type":37,"value":1199},"6f5b95c",{"type":37,"value":1201},").",{"type":32,"tag":67,"props":1203,"children":1204},{},[1205,1210,1212,1218,1219,1225],{"type":32,"tag":132,"props":1206,"children":1207},{},[1208],{"type":37,"value":1209},"The title shrinks on its own clock:",{"type":37,"value":1211}," Mark tried slower (2s), then faster; 500ms (",{"type":32,"tag":73,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":37,"value":1217},"STICKY_BAND.motion.title",{"type":37,"value":154},{"type":32,"tag":73,"props":1220,"children":1222},{"className":1221},[],[1223],{"type":37,"value":1224},"--q-band-title",{"type":37,"value":1226},"). Settling back to rest stays 1s.",{"type":32,"tag":67,"props":1228,"children":1229},{},[1230,1235,1237,1243,1245,1251,1253,1259],{"type":32,"tag":132,"props":1231,"children":1232},{},[1233],{"type":37,"value":1234},"Look:",{"type":37,"value":1236}," shadow 7px at 0.11 + 28px at 0.08 (taller, then lighter); backing ",{"type":32,"tag":73,"props":1238,"children":1240},{"className":1239},[],[1241],{"type":37,"value":1242},"surface-sunken-subtle",{"type":37,"value":1244},", a tick off the page (lighter in light mode, darker in dark); 16px under docked pills (",{"type":32,"tag":73,"props":1246,"children":1248},{"className":1247},[],[1249],{"type":37,"value":1250},"navBottomPad",{"type":37,"value":1252},", was 12; band 94px with pills, 54px without). Layer ",{"type":32,"tag":73,"props":1254,"children":1256},{"className":1255},[],[1257],{"type":37,"value":1258},"04e4406",{"type":37,"value":451},{"type":32,"tag":67,"props":1261,"children":1262},{},[1263,1268,1269,1275],{"type":32,"tag":132,"props":1264,"children":1265},{},[1266],{"type":37,"value":1267},"q-nuxt-layer 0.9.27",{"type":37,"value":856},{"type":32,"tag":73,"props":1270,"children":1272},{"className":1271},[],[1273],{"type":37,"value":1274},"be148b3",{"type":37,"value":1276},", tag pushed, publish green). Lockfiles refreshed in all six consumers.",{"key":1278,"title":1279,"empty":19,"ast":1280},"outcome","Outcome",{"type":29,"children":1281},[1282,1334,1397,1405,1472],{"type":32,"tag":33,"props":1283,"children":1284},{},[1285,1290,1292,1297,1299,1304,1306,1311,1313,1318,1320,1325,1327,1332],{"type":32,"tag":132,"props":1286,"children":1287},{},[1288],{"type":37,"value":1289},"Completed 2026-10-02.",{"type":37,"value":1291}," The page title joins the sticky band. ",{"type":32,"tag":73,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":37,"value":554},{"type":37,"value":1298}," turns on the two-column band: the real ",{"type":32,"tag":73,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":37,"value":94},{"type":37,"value":1305}," pins beside the filter at 15px with its hairline, the jump pills dock under it as an outlined compact bar, and the filter drops its labels. Nothing in the band moves the page. It shipped in q-nuxt-layer 0.9.26, with Mark's polish on the live app in 0.9.27. qdash's ",{"type":32,"tag":73,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":37,"value":198},{"type":37,"value":1312}," is a fragment, so the title is a direct child of the page and pins on every page (",{"type":32,"tag":73,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":37,"value":950},{"type":37,"value":1319},", pushed to ",{"type":32,"tag":73,"props":1321,"children":1323},{"className":1322},[],[1324],{"type":37,"value":934},{"type":37,"value":1326},"). The ",{"type":32,"tag":73,"props":1328,"children":1330},{"className":1329},[],[1331],{"type":37,"value":86},{"type":37,"value":1333}," docs page is the guide, with the mock running live in a frame.",{"type":32,"tag":63,"props":1335,"children":1336},{},[1337,1355,1371,1381],{"type":32,"tag":67,"props":1338,"children":1339},{},[1340,1345,1347,1353],{"type":32,"tag":132,"props":1341,"children":1342},{},[1343],{"type":37,"value":1344},"Motion:",{"type":37,"value":1346}," quint-in-out, 1s to compact; the title shrinks on its own 500ms clock; the backing fades in over 400ms at its height and only then animates; the pills dock in 200ms. Scrolling up draws the same as scrolling down (",{"type":32,"tag":73,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":37,"value":1352},"STICKY_BAND.upRestyles",{"type":37,"value":1354},", kept off).",{"type":32,"tag":67,"props":1356,"children":1357},{},[1358,1362,1364,1369],{"type":32,"tag":132,"props":1359,"children":1360},{},[1361],{"type":37,"value":1234},{"type":37,"value":1363}," the backing a tick off the page (",{"type":32,"tag":73,"props":1365,"children":1367},{"className":1366},[],[1368],{"type":37,"value":1242},{"type":37,"value":1370},"); a two-layer shadow (7px at 0.11, 28px at 0.08); 16px under the docked pills; listing band 54px, with pills 94px.",{"type":32,"tag":67,"props":1372,"children":1373},{},[1374,1379],{"type":32,"tag":132,"props":1375,"children":1376},{},[1377],{"type":37,"value":1378},"Ruled:",{"type":37,"value":1380}," detail pages show the entity name twice at full size (page title and actor header). Mark: fine.",{"type":32,"tag":67,"props":1382,"children":1383},{},[1384,1388,1390,1396],{"type":32,"tag":132,"props":1385,"children":1386},{},[1387],{"type":37,"value":419},{"type":37,"value":1389}," Phase 0 (design-local mock), Phase 1 (on the layer, plus the guide) and Phase 4 (in qdash at 0.9.27, ",{"type":32,"tag":73,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":37,"value":1395},"c106-qdash-*",{"type":37,"value":1201},{"type":32,"tag":33,"props":1398,"children":1399},{},[1400],{"type":32,"tag":132,"props":1401,"children":1402},{},[1403],{"type":37,"value":1404},"Learnings:",{"type":32,"tag":63,"props":1406,"children":1407},{},[1408,1418,1428,1438,1456],{"type":32,"tag":67,"props":1409,"children":1410},{},[1411,1416],{"type":32,"tag":132,"props":1412,"children":1413},{},[1414],{"type":37,"value":1415},"A sticky element must not change its own flow height.",{"type":37,"value":1417}," Whatever pins freezes its rest height and restyles inside it; the filter is a zero-height box; the backing is out of flow. Every mode flip was measured with Δpage 0.",{"type":32,"tag":67,"props":1419,"children":1420},{},[1421,1426],{"type":32,"tag":132,"props":1422,"children":1423},{},[1424],{"type":37,"value":1425},"Use the real component.",{"type":37,"value":1427}," A teleported copy of the title fought the original. The filter's technique, a sticky box that never moves the flow, worked for the title too.",{"type":32,"tag":67,"props":1429,"children":1430},{},[1431,1436],{"type":32,"tag":132,"props":1432,"children":1433},{},[1434],{"type":37,"value":1435},"Docking beats sizing ahead.",{"type":37,"value":1437}," The backing grows when the pills arrive, not before, so it never covers them on the way in.",{"type":32,"tag":67,"props":1439,"children":1440},{},[1441,1446,1448,1454],{"type":32,"tag":132,"props":1442,"children":1443},{},[1444],{"type":37,"value":1445},"Fresh loads can be served stale while open tabs hot-update.",{"type":37,"value":1447}," Restart before verifying; a removed auto-import export needs a restart. For a tree another session is using, verify on an APFS clone that shares the real layer (",{"type":32,"tag":73,"props":1449,"children":1451},{"className":1450},[],[1452],{"type":37,"value":1453},"cp -Rc",{"type":37,"value":1455},"; a symlinked layer path fails Vite's fs.allow).",{"type":32,"tag":67,"props":1457,"children":1458},{},[1459,1470],{"type":32,"tag":132,"props":1460,"children":1461},{},[1462,1464,1469],{"type":37,"value":1463},"Split a scripted Vue rewrite on the root's closing tag, not the first ",{"type":32,"tag":73,"props":1465,"children":1467},{"className":1466},[],[1468],{"type":37,"value":1121},{"type":37,"value":451},{"type":37,"value":1471}," Tests and the bible check don't compile SFCs, so add a compile check.",{"type":32,"tag":33,"props":1473,"children":1474},{},[1475,1480,1482,1488,1490,1495,1497,1502,1504,1510,1512,1517,1518,1524,1525,1531,1533,1539,1541,1546,1548,1554,1556,1562,1564,1570,1572,1577,1579,1585,1587,1593],{"type":32,"tag":132,"props":1476,"children":1477},{},[1478],{"type":37,"value":1479},"Path change (c107, 2026-10-02).",{"type":37,"value":1481}," The Fable app is now ",{"type":32,"tag":73,"props":1483,"children":1485},{"className":1484},[],[1486],{"type":37,"value":1487},"..\u002Fqcontrol\u002Fcrates\u002Fqdash\u002Fui",{"type":37,"value":1489}," on branch ",{"type":32,"tag":73,"props":1491,"children":1493},{"className":1492},[],[1494],{"type":37,"value":934},{"type":37,"value":1496},". Its dev server is ",{"type":32,"tag":73,"props":1498,"children":1500},{"className":1499},[],[1501],{"type":37,"value":942},{"type":37,"value":1503}," (launch config ",{"type":32,"tag":73,"props":1505,"children":1507},{"className":1506},[],[1508],{"type":37,"value":1509},"qdash-app",{"type":37,"value":1511},") and the seed backend is ",{"type":32,"tag":73,"props":1513,"children":1515},{"className":1514},[],[1516],{"type":37,"value":1053},{"type":37,"value":856},{"type":32,"tag":73,"props":1519,"children":1521},{"className":1520},[],[1522],{"type":37,"value":1523},"qdash-seed",{"type":37,"value":1326},{"type":32,"tag":73,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":37,"value":1530},"qcontrol-c99-fable",{"type":37,"value":1532}," worktree, its ",{"type":32,"tag":73,"props":1534,"children":1536},{"className":1535},[],[1537],{"type":37,"value":1538},"c99\u002Fclaude-code-fable-5.1",{"type":37,"value":1540}," working branch and ",{"type":32,"tag":73,"props":1542,"children":1544},{"className":1543},[],[1545],{"type":37,"value":833},{"type":37,"value":1547}," are gone. Read every ",{"type":32,"tag":73,"props":1549,"children":1551},{"className":1550},[],[1552],{"type":37,"value":1553},"apps\u002Fclaude-code-fable-5.1\u002F…",{"type":37,"value":1555}," path in this cycle as ",{"type":32,"tag":73,"props":1557,"children":1559},{"className":1558},[],[1560],{"type":37,"value":1561},"crates\u002Fqdash\u002Fui\u002F…",{"type":37,"value":1563},", the same files moved. The c99 rule that kept ",{"type":32,"tag":73,"props":1565,"children":1567},{"className":1566},[],[1568],{"type":37,"value":1569},"src\u002F",{"type":37,"value":1571}," read-only applied to the parallel apps and ended with the cutover. Commit to ",{"type":32,"tag":73,"props":1573,"children":1575},{"className":1574},[],[1576],{"type":37,"value":934},{"type":37,"value":1578},", never ",{"type":32,"tag":73,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":37,"value":1584},"main",{"type":37,"value":1586},". See ",{"type":32,"tag":164,"props":1588,"children":1590},{"href":1589},"\u002Fcycles\u002Fdesign\u002Fc107\u002Fdoc\u002FSTORY",[1591],{"type":37,"value":1592},"c107",{"type":37,"value":451},[],[1596,173],"initial-prompt.md",[1598,1599],{"file":1596,"title":14},{"file":173,"title":1600},"— Sticky Title: analysis, questions, plan (2026-10-02)",[1602,1611,1618,1629,1634,1639,1644,1649,1654,1662,1668,1673,1678,1683,1689,1694,1699,1704,1710,1715,1721,1728,1733],{"src":1603,"kind":1604,"order":1605,"caption":1606,"thread":1607,"capturedAt":1609,"subject":441,"route":144,"evolution":1610},"\u002Fcycles\u002Fdesign\u002Fc106-detail-rest.png","hero",0,"Detail page at rest: Organization \u002F Teams \u002F Payments at its full 28px (Fable PageHeader), the Filter on the title row, the actor header and the jump pills below; no band backing",{"id":1608,"label":433,"date":17},"phase0","2026-10-02T17:15:30.850Z",{"subject":441,"moments":22},{"src":1612,"kind":1604,"order":1605,"caption":1613,"thread":1614,"capturedAt":1616,"subject":441,"route":144,"evolution":1617},"\u002Fcycles\u002Fdesign\u002Fc106-p1-detail-rest.png","Detail page at rest: Organization \u002F Teams \u002F Payments at its full 28px (PageHeader's 19px top and 44px row via rowMinHeight), the Filter on the title row, the actor header and the jump pills below; no band backing",{"id":1615,"label":789,"date":17},"phase1","2026-10-02T18:23:33.212Z",{"subject":441,"moments":22},{"src":1619,"kind":1604,"order":1605,"caption":1620,"thread":1621,"capturedAt":1624,"subject":1625,"route":1626,"evolution":1627},"\u002Fcycles\u002Fdesign\u002Fc106-qdash-listing-rest.png","qdash \u002Finventory\u002Fharnesses at rest: Inventory \u002F Harnesses at 28px on the sidebar's first hairline, the global filter on the title row; no backing",{"id":1622,"label":1623,"date":17},"qdash","Phase 4 — in qdash (0.9.27)","2026-10-02T19:28:48.711Z","page\u002Fharnesses","\u002Finventory\u002Fharnesses",{"subject":1625,"moments":1628},6,{"src":20,"kind":1604,"order":1630,"caption":1631,"thread":1632,"capturedAt":1609,"subject":441,"route":144,"evolution":1633},1,"Scrolling down: the title pins beside the Filter at 15px, the Filter drops its labels, the pills tighten in row 2, and the shadowed band is 91px; the Installs header pins right under it",{"id":1608,"label":433,"date":17},{"subject":441,"moments":22},{"src":1635,"kind":1604,"order":1630,"caption":1636,"thread":1637,"capturedAt":1616,"subject":441,"route":144,"evolution":1638},"\u002Fcycles\u002Fdesign\u002Fc106-p1-detail-down.png","Scrolling down: the title pins beside the Filter at 15px with its hairline, the Filter shows values only, the pills dock under the title — grey-350 outline, black semibold, the active pill purple bold with a 2px ring — and the shadowed band is 90px; the Installs header pins right under it",{"id":1615,"label":789,"date":17},{"subject":441,"moments":22},{"src":1640,"kind":1604,"order":1630,"caption":1641,"thread":1642,"capturedAt":1624,"subject":1625,"route":1626,"evolution":1643},"\u002Fcycles\u002Fdesign\u002Fc106-qdash-listing-down.png","Scrolled down: Harnesses pinned at 15px beside the compact filter (it shrank in 500ms), a 54px band on surface-sunken-subtle with the 7px + 28px shadow; the page scrolls under it",{"id":1622,"label":1623,"date":17},{"subject":1625,"moments":1628},{"src":1645,"kind":1604,"order":22,"caption":1646,"thread":1647,"capturedAt":1609,"subject":441,"route":144,"evolution":1648},"\u002Fcycles\u002Fdesign\u002Fc106-detail-up.png","Scrolling back up 80px: the in-between set — title 20px, Filter labels back, pills full size; the band grows to 129px and the header follows",{"id":1608,"label":433,"date":17},{"subject":441,"moments":22},{"src":1650,"kind":1604,"order":22,"caption":1651,"thread":1652,"capturedAt":1616,"subject":441,"route":144,"evolution":1653},"\u002Fcycles\u002Fdesign\u002Fc106-p1-detail-up.png","Scrolling back up: nothing changes — the band tracks the direction (the panel reads up, looks down) but draws it as down while STICKY_BAND.upRestyles is off",{"id":1615,"label":789,"date":17},{"subject":441,"moments":22},{"src":1655,"kind":1604,"order":22,"caption":1656,"thread":1657,"capturedAt":1624,"subject":1658,"route":1659,"evolution":1660},"\u002Fcycles\u002Fdesign\u002Fc106-qdash-detail-rest.png","qdash harness detail (Claude Code) at rest: the page title at its full 28px (detail pages dropped their 15px), the actor header and the jump pills below",{"id":1622,"label":1623,"date":17},"page\u002Fharness-detail","\u002Finventory\u002Fharnesses\u002Fdetail?adapterId=claude-cli",{"subject":1658,"moments":1661},4,{"src":1663,"kind":1604,"order":1664,"caption":1665,"thread":1666,"capturedAt":1609,"subject":441,"route":144,"evolution":1667},"\u002Fcycles\u002Fdesign\u002Fc106-detail-jump.png",3,"Pill jump to Sessions: the band lands compact (91px) and the heading sits 16px under it",{"id":1608,"label":433,"date":17},{"subject":441,"moments":22},{"src":1669,"kind":1604,"order":1664,"caption":1670,"thread":1671,"capturedAt":1616,"subject":441,"route":144,"evolution":1672},"\u002Fcycles\u002Fdesign\u002Fc106-p1-detail-jump.png","Pill jump to Sessions: the band holds compact through the smooth scroll and the heading lands 16px under it; the Sessions pill takes the ring in 200ms",{"id":1615,"label":789,"date":17},{"subject":441,"moments":22},{"src":1674,"kind":1604,"order":1664,"caption":1675,"thread":1676,"capturedAt":1624,"subject":1658,"route":1659,"evolution":1677},"\u002Fcycles\u002Fdesign\u002Fc106-qdash-detail-down.png","Scrolled down: the title pinned at 15px, the pills docked under it as the outlined compact bar with 16px below them — a 94px band (the Installs table sits in a horizontal scroll box, so its header scrolls rather than pins)",{"id":1622,"label":1623,"date":17},{"subject":1658,"moments":1661},{"src":1679,"kind":1604,"order":1661,"caption":1680,"thread":1681,"capturedAt":1624,"subject":1658,"route":1659,"evolution":1682},"\u002Fcycles\u002Fdesign\u002Fc106-qdash-detail-jump.png","Pill jump to Surface: the band holds compact through the smooth scroll and the heading lands 16px under it",{"id":1622,"label":1623,"date":17},{"subject":1658,"moments":1661},{"src":1684,"kind":1604,"order":1685,"caption":1686,"thread":1687,"capturedAt":1609,"subject":441,"route":144,"evolution":1688},"\u002Fcycles\u002Fdesign\u002Fc106-listing-rest.png",5,"Listing page at rest, modelled on :3032\u002Finventory\u002Fharnesses: Inventory \u002F Harnesses at 28px; no sub nav, so the band will be one row",{"id":1608,"label":433,"date":17},{"subject":441,"moments":22},{"src":1690,"kind":1604,"order":1685,"caption":1691,"thread":1692,"capturedAt":1616,"subject":441,"route":144,"evolution":1693},"\u002Fcycles\u002Fdesign\u002Fc106-p1-listing-rest.png","Listing page at rest, modelled on :3032\u002Finventory\u002Fharnesses: Inventory \u002F Harnesses at 28px; no sub nav, so the band is one row",{"id":1615,"label":789,"date":17},{"subject":441,"moments":22},{"src":1695,"kind":1604,"order":1628,"caption":1696,"thread":1697,"capturedAt":1609,"subject":441,"route":144,"evolution":1698},"\u002Fcycles\u002Fdesign\u002Fc106-listing-down.png","Listing, scrolling down: one row — Harnesses at 15px beside the compact Filter, a 53px band, the Recent Work header pinned under it",{"id":1608,"label":433,"date":17},{"subject":441,"moments":22},{"src":1700,"kind":1604,"order":1628,"caption":1701,"thread":1702,"capturedAt":1616,"subject":441,"route":144,"evolution":1703},"\u002Fcycles\u002Fdesign\u002Fc106-p1-listing-down.png","Listing, scrolling down: Harnesses pinned at 15px beside the compact Filter, a 53px band, the Recent Work header pinned under it",{"id":1615,"label":789,"date":17},{"subject":441,"moments":22},{"src":1705,"kind":1604,"order":1706,"caption":1707,"thread":1708,"capturedAt":1609,"subject":441,"route":144,"evolution":1709},"\u002Fcycles\u002Fdesign\u002Fc106-listing-up.png",7,"Listing, scrolling up: title 20px and the Filter with its labels; the band grows to 81px",{"id":1608,"label":433,"date":17},{"subject":441,"moments":22},{"src":1711,"kind":1604,"order":1706,"caption":1712,"thread":1713,"capturedAt":1616,"subject":441,"route":144,"evolution":1714},"\u002Fcycles\u002Fdesign\u002Fc106-p1-listing-up.png","Listing, scrolling up: unchanged — 53px, the same as scrolling down",{"id":1615,"label":789,"date":17},{"subject":441,"moments":22},{"src":1716,"kind":1604,"order":1717,"caption":1718,"thread":1719,"capturedAt":1616,"subject":805,"route":1720},"\u002Fcycles\u002Fdesign\u002Fc106-p1-docs-sticky-band.png",8,"The UxStickyBand docs page: the guide opens with the mock running live in a frame (scroll inside it), then setup, layouts, members, scrolling, rules and reference",{"id":1615,"label":789,"date":17},"\u002Fcomponents\u002Flayout\u002Fux-sticky-band",{"src":1722,"kind":1723,"order":1724,"caption":1725,"thread":1726,"capturedAt":1609,"subject":441,"route":144,"evolution":1727},"\u002Fcycles\u002Fdesign\u002Fc106-detail-filter-full.png","full",9000,"The Q3 lever off: scrolling down with the Filter keeping its labels — row 1 stays as tall as the full Filter, which is what the compact look saves",{"id":1608,"label":433,"date":17},{"subject":441,"moments":22},{"src":1729,"kind":1723,"order":1724,"caption":1730,"thread":1731,"capturedAt":1616,"subject":441,"route":144,"evolution":1732},"\u002Fcycles\u002Fdesign\u002Fc106-p1-detail-filter-full.png","Filter bandCompact off: the Filter keeps its labels while pinned, so the right column (8 + 65 + 8) sets the band instead of the title and pills",{"id":1615,"label":789,"date":17},{"subject":441,"moments":22},{"src":1734,"kind":1723,"order":1735,"thread":1736,"capturedAt":1616,"subject":805,"route":1720},"\u002Fcycles\u002Fdesign\u002Fc106-p1-docs-sticky-band-full.png",9008,{"id":1615,"label":789,"date":17},[1738],{"path":1739,"title":1740,"image":1674,"gallery":1741},"archive\u002F2026-q4\u002F2026-10-02-c106-sticky-title","Sticky Title — the Page Title Joins the Band",[1742,1744,1746,1748,1750,1752,1754,1756,1758,1760],{"src":1674,"alt":1743},"In qdash at 0.9.27: the harness title pinned at 15px, the pills docked with 16px under them; a 94px band.",{"src":1655,"alt":1745},"The same page at rest: the page title at its full 28px above the actor header and the pills.",{"src":1640,"alt":1747},"A qdash listing (Inventory \u002F Harnesses) scrolled: the title beside the compact filter in a 54px band.",{"src":1635,"alt":1749},"Scrolling down: the title pinned at 15px with its hairline, the filter values only, the pills docked under the title (grey-350 outline, the active pill purple bold with a 2px ring); a 90px band with its two-layer shadow.",{"src":1612,"alt":1751},"At rest: the title at its full 28px on the title row with the filter, the actor header and the pills below; no band.",{"src":1669,"alt":1753},"A pill jump to Sessions lands 16px under the compact band; the Sessions pill takes the ring.",{"src":1729,"alt":1755},"The Filter's bandCompact off: it keeps its labels, so the right column sets the band's height.",{"src":1700,"alt":1757},"A listing (Inventory \u002F Harnesses) scrolling down: no sub nav, so the band is one 53px row.",{"src":1716,"alt":1759},"The UxStickyBand docs page, now the sticky-band guide, opening with the mock running live in a frame.",{"src":20,"alt":1761},"Phase 0, the design-local mock: full-size pills and the earlier band, before the dock and the outline.",[1763,1764,1765,1766],{"route":144,"href":144},{"route":1720,"href":1720},{"route":1659,"href":8},{"route":1626,"href":8},1794599411621]