[{"data":1,"prerenderedAt":362},["ShallowReactive",2],{"navigation":3,"\u002Fchangelog":134,"\u002Fchangelog-surround":359},[4,16,38,80,112,129],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Get started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-rocket",{"title":12,"path":13,"stem":14,"icon":15},"Your first station run","\u002Fgetting-started\u002Ffirst-run","1.getting-started\u002F2.first-run","i-lucide-play",{"title":17,"path":18,"stem":19,"children":20,"icon":22},"Core concepts","\u002Fcore-concepts","2.core-concepts\u002F1.index",[21,23,28,33],{"title":17,"path":18,"stem":19,"icon":22},"i-lucide-boxes",{"title":24,"path":25,"stem":26,"icon":27},"Projects and access","\u002Fcore-concepts\u002Fprojects-and-access","2.core-concepts\u002F2.projects-and-access","i-lucide-users",{"title":29,"path":30,"stem":31,"icon":32},"Roles and permissions","\u002Fcore-concepts\u002Froles-and-permissions","2.core-concepts\u002F3.roles-and-permissions","i-lucide-shield-check",{"title":34,"path":35,"stem":36,"icon":37},"Custom roles","\u002Fcore-concepts\u002Fcustom-roles","2.core-concepts\u002F4.custom-roles","i-lucide-user-cog",{"title":39,"path":40,"stem":41,"children":42,"icon":44},"Station runtime","\u002Fstation-runtime","3.station-runtime\u002F1.index",[43,45,50,55,60,65,70,75],{"title":39,"path":40,"stem":41,"icon":44},"i-lucide-circuit-board",{"title":46,"path":47,"stem":48,"icon":49},"Configure a station","\u002Fstation-runtime\u002Fconfiguration","3.station-runtime\u002F2.configuration","i-lucide-file-code-2",{"title":51,"path":52,"stem":53,"icon":54},"Custom stages","\u002Fstation-runtime\u002Fcustom-stages","3.station-runtime\u002F3.custom-stages","i-lucide-puzzle",{"title":56,"path":57,"stem":58,"icon":59},"Credentials and secrets","\u002Fstation-runtime\u002Fcredentials-and-secrets","3.station-runtime\u002F4.credentials-and-secrets","i-lucide-key-round",{"title":61,"path":62,"stem":63,"icon":64},"Multiple lanes","\u002Fstation-runtime\u002Fmultiple-lanes","3.station-runtime\u002F5.multiple-lanes","i-lucide-git-branch",{"title":66,"path":67,"stem":68,"icon":69},"Capture DUT values","\u002Fstation-runtime\u002Fcaptured-values","3.station-runtime\u002F6.captured-values","i-lucide-list-checks",{"title":71,"path":72,"stem":73,"icon":74},"Validate configuration","\u002Fstation-runtime\u002Fvalidation","3.station-runtime\u002F7.validation","i-lucide-file-check-2",{"title":76,"path":77,"stem":78,"icon":79},"Upgrade a station","\u002Fstation-runtime\u002Fupgrading","3.station-runtime\u002F8.upgrading","i-lucide-package-check",{"title":81,"path":82,"stem":83,"children":84,"icon":86},"Production workflows","\u002Fproduction-workflows","4.production-workflows\u002F1.index",[85,87,92,97,102,107],{"title":81,"path":82,"stem":83,"icon":86},"i-lucide-factory",{"title":88,"path":89,"stem":90,"icon":91},"Applications and firmware","\u002Fproduction-workflows\u002Ffirmware-images","4.production-workflows\u002F2.firmware-images","i-lucide-cpu",{"title":93,"path":94,"stem":95,"icon":96},"DUT records and IDs","\u002Fproduction-workflows\u002Fdut-records-and-ids","4.production-workflows\u002F3.dut-records-and-ids","i-lucide-scan-barcode",{"title":98,"path":99,"stem":100,"icon":101},"Results and logs","\u002Fproduction-workflows\u002Fresults-and-logs","4.production-workflows\u002F4.results-and-logs","i-lucide-chart-no-axes-combined",{"title":103,"path":104,"stem":105,"icon":106},"Operator kiosk","\u002Fproduction-workflows\u002Foperator-kiosk","4.production-workflows\u002F5.operator-kiosk","i-lucide-monitor",{"title":108,"path":109,"stem":110,"icon":111},"DUT capture history","\u002Fproduction-workflows\u002Fdut-capture-history","4.production-workflows\u002F6.dut-capture-history","i-lucide-history",{"title":113,"path":114,"stem":115,"children":116,"icon":118},"Reference","\u002Freference","5.reference\u002F1.index",[117,119,124],{"title":113,"path":114,"stem":115,"icon":118},"i-lucide-book-open",{"title":120,"path":121,"stem":122,"icon":123},"API access","\u002Freference\u002Fapi-access","5.reference\u002F2.api-access","i-lucide-braces",{"title":125,"path":126,"stem":127,"icon":128},"Troubleshooting","\u002Freference\u002Ftroubleshooting","5.reference\u002F3.troubleshooting","i-lucide-life-buoy",{"title":130,"path":131,"stem":132,"icon":133},"Changelog","\u002Fchangelog","6.changelog","i-lucide-scroll-text",{"id":135,"title":130,"body":136,"description":352,"extension":353,"links":354,"meta":355,"navigation":356,"path":131,"seo":357,"stem":132,"__hash__":358},"docs\u002F6.changelog.md",{"type":137,"value":138,"toc":338},"minimark",[139,143,148,153,197,201,218,222,235,257,261,283,291,295,309,316,320,331],[140,141,142],"p",{},"This changelog highlights product changes and links to the relevant guides. HTF application releases and station runtime releases are versioned separately. Physical station installations need a separate package update.",[144,145,147],"h2",{"id":146},"_3-october-2026-htf-v014-and-station-v030","3 October 2026 — HTF v0.1.4 and station v0.3.0",[149,150,152],"h3",{"id":151},"added","Added",[154,155,156,164,169,175,186],"ul",{},[157,158,159,163],"li",{},[160,161,162],"a",{"href":67},"Structured DUT captures"," from custom Python stages and built-in output mappings, with source provenance, verification state, and capture warnings.",[157,165,166,168],{},[160,167,108],{"href":109},", historical identifier search, CSV export, latest successful values, and identifier change flags.",[157,170,171,174],{},[160,172,173],{"href":30},"Project Admin, Operator, and Viewer roles and station Operator grants",", with scoped access management and invitation roles.",[157,176,177,180,181,185],{},[160,178,179],{"href":35},"Custom project and station roles"," managed in ",[182,183,184],"strong",{},"Identity → Roles",".",[157,187,188,191,192,196],{},[160,189,190],{"href":72},"Offline configuration validation"," through ",[193,194,195],"code",{},"htf-station check-config",", plus detailed runtime YAML diagnostics in the application.",[149,198,200],{"id":199},"improved-and-fixed","Improved and fixed",[154,202,203,206,212,215],{},[157,204,205],{},"Capture reports persist across disconnects and station restarts until the server acknowledges them. Rejected reports retain their envelope and diagnostic reason without changing valid hardware outcomes.",[157,207,208,211],{},[160,209,210],{"href":104},"Kiosk progress and recovery"," survive tab changes and connection loss; restored sessions recover active lanes and eligible completed runs.",[157,213,214],{},"Live station events respect current grants and role definitions. Member privacy and API permission enforcement are tighter, and authentication caching reduces repeated validation load.",[157,216,217],{},"Server completion timestamps and serialised terminal updates keep recovered run outcomes consistent. Infuse validation displays the final boot result.",[149,219,221],{"id":220},"station-upgrade-notes","Station upgrade notes",[140,223,224,225,228,229,232,233,185],{},"Upgrade stations after the server is on HTF v0.1.4. Existing station versions remain compatible. Before changing a jig, validate its local and exported runtime YAML, declare ",[193,226,227],{},"required_secrets",", add ",[193,230,231],{},"interpolate: true"," where runtime expression expansion is needed, and preserve the durable report outbox. Stage names are limited to 128 UTF-16 units and plans to 256 stages per lane. Follow ",[160,234,76],{"href":77},[140,236,237,238,244,245,250,251,256],{},"Release records: ",[160,239,243],{"href":240,"rel":241},"https:\u002F\u002Fgithub.com\u002FEmbeint\u002FEmbeint-HTF-V2\u002Freleases\u002Ftag\u002Fhtf-v0.1.4",[242],"nofollow","HTF v0.1.4",", ",[160,246,249],{"href":247,"rel":248},"https:\u002F\u002Fgithub.com\u002FEmbeint\u002Fembeint-htf-station\u002Freleases\u002Ftag\u002Fv0.3.0",[242],"station v0.3.0",", and ",[160,252,255],{"href":253,"rel":254},"https:\u002F\u002Fpypi.org\u002Fproject\u002Fembeint-htf-station\u002F0.3.0\u002F",[242],"station package on PyPI",". The HTF server repository requires access.",[144,258,260],{"id":259},"_25-september-2026-htf-v013","25 September 2026 — HTF v0.1.3",[154,262,263,270,280],{},[157,264,265,266,269],{},"Added ",[160,267,268],{"href":94},"linked DUT records and project ID pools",", including CSV mapping, manual rows, immutable claims, queue priority, and bulk management.",[157,271,272,273,276,277,185],{},"Added encrypted ",[160,274,275],{"href":57},"station secrets"," and a self-hosted ",[160,278,279],{"href":121},"customer API reference",[157,281,282],{},"Improved invited-account setup\u002Frecovery and kiosk behavior during connection loss.",[140,284,285,286,185],{},"Release record: ",[160,287,290],{"href":288,"rel":289},"https:\u002F\u002Fgithub.com\u002FEmbeint\u002FEmbeint-HTF-V2\u002Freleases\u002Ftag\u002Fhtf-v0.1.3",[242],"HTF v0.1.3",[144,292,294],{"id":293},"_23-september-2026-htf-v012","23 September 2026 — HTF v0.1.2",[154,296,297,300,306],{},[157,298,299],{},"Added organisation invitations, password reset, My Account profiles, and private profile photos.",[157,301,302,303,185],{},"Added scoped ",[160,304,305],{"href":121},"personal API keys and service accounts",[157,307,308],{},"Improved kiosk retry\u002Foffline handling and membership reconciliation, and fixed duplicate firmware-name handling.",[140,310,285,311,185],{},[160,312,315],{"href":313,"rel":314},"https:\u002F\u002Fgithub.com\u002FEmbeint\u002FEmbeint-HTF-V2\u002Freleases\u002Ftag\u002Fhtf-v0.1.2",[242],"HTF v0.1.2",[144,317,319],{"id":318},"_17-september-2026-htf-v011","17 September 2026 — HTF v0.1.1",[154,321,322,328],{},[157,323,265,324,327],{},[160,325,326],{"href":104},"station-specific kiosk accounts",", persistent kiosk sessions, administrator controls, and audited run actions.",[157,329,330],{},"Added kiosk handover that clears human authentication before kiosk sign-in.",[140,332,285,333,185],{},[160,334,337],{"href":335,"rel":336},"https:\u002F\u002Fgithub.com\u002FEmbeint\u002FEmbeint-HTF-V2\u002Freleases\u002Ftag\u002Fhtf-v0.1.1",[242],"HTF v0.1.1",{"title":339,"searchDepth":340,"depth":341,"links":342},"",1,2,[343,349,350,351],{"id":146,"depth":341,"text":147,"children":344},[345,347,348],{"id":151,"depth":346,"text":152},3,{"id":199,"depth":346,"text":200},{"id":220,"depth":346,"text":221},{"id":259,"depth":341,"text":260},{"id":293,"depth":341,"text":294},{"id":318,"depth":341,"text":319},"Released HTF features, fixes, and station upgrade notes.","md",null,{},{"icon":133},{"title":130,"description":352},"j-0fms6yFXwHTBqVu1UNoR5n7Y95kCCCh0gmvLvd_rE",[360,354],{"title":125,"path":126,"stem":127,"description":361,"icon":128,"children":-1},"First checks for offline stations and unexpected run outcomes.",1791170922428]