[{"data":1,"prerenderedAt":468},["ShallowReactive",2],{"navigation_docs":3,"-development-distribution":92,"-development-distribution-surround-resolved":460,"daily-note-surround--development-distribution":95},[4,9,35,66,82,87],{"title":5,"path":6,"stem":5,"icon":7,"order":8},"Home","/home","i-lucide-home",0,{"title":10,"icon":11,"order":12,"path":13,"stem":14,"children":15,"page":34},"Guide","i-lucide-book-open",1,"/guide","1.guide",[16,22,28],{"title":17,"path":18,"stem":19,"icon":20,"order":21},"Installation","/guide/installation","1.guide/1.installation","i-lucide-download",10,{"title":23,"path":24,"stem":25,"icon":26,"order":27},"Usage","/guide/usage","1.guide/2.usage","i-lucide-layers",20,{"title":29,"path":30,"stem":31,"icon":32,"order":33},"Configuration","/guide/configuration","1.guide/3.configuration","i-lucide-settings",30,false,{"title":36,"icon":26,"order":37,"path":38,"stem":39,"children":40,"page":34},"Architecture",2,"/architecture","2.architecture",[41,45,50,55,61],{"title":42,"path":43,"stem":44,"icon":26,"order":21},"Overview","/architecture/overview","2.architecture/1.overview",{"title":46,"path":47,"stem":48,"icon":49,"order":27},"Ghostty","/architecture/ghostty","2.architecture/2.ghostty","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54,"order":33},"Sessions","/architecture/sessions","2.architecture/3.sessions","i-lucide-layout-grid",{"title":56,"path":57,"stem":58,"icon":59,"order":60},"Shell Integration","/architecture/shell-integration","2.architecture/4.shell-integration","i-lucide-plug",40,{"title":62,"path":63,"stem":64,"icon":54,"order":65},"Widget","/architecture/widget","2.architecture/5.widget",50,{"title":67,"icon":68,"order":69,"path":70,"stem":71,"children":72,"page":34},"Development","i-lucide-wrench",3,"/development","3.development",[73,77],{"title":74,"path":75,"stem":76,"icon":68,"order":21},"Building","/development/building","3.development/1.building",{"title":78,"path":79,"stem":80,"icon":81,"order":27},"Distribution","/development/distribution","3.development/2.distribution","i-lucide-package",{"title":83,"path":84,"stem":83,"icon":85,"order":86},"Changelog","/changelog","i-lucide-history",98,{"title":88,"path":89,"stem":88,"icon":90,"order":91},"About","/about","i-lucide-info",99,{"id":93,"title":94,"aliases":95,"body":96,"concluded":95,"date":95,"description":454,"documentation":95,"extension":455,"isBase":34,"links":95,"meta":456,"mtime":95,"navigation":457,"order":27,"outcome":95,"path":79,"project":95,"repository":95,"seo":458,"started":95,"status":95,"stem":80,"tags":95,"team":95,"type":95,"__hash__":459},"docs/3.development/2.distribution.md","Distribution & Notarization",null,{"type":97,"value":98,"toc":448},"minimark",[99,104,114,118,165,169,305,309,399,403,444],[100,101,103],"h2",{"id":102},"requirements","Requirements",[105,106,107,111],"ul",{},[108,109,110],"li",{},"A \"Developer ID Application\" certificate in Keychain",[108,112,113],{},"An app-specific password for your Apple ID",[115,116,117],"p",{},"Check for a valid signing certificate:",[119,120,125],"pre",{"className":121,"code":122,"language":123,"meta":124,"style":124},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","security find-identity -v -p codesigning | grep \"Developer ID\"\n","bash","",[126,127,128],"code",{"__ignoreMap":124},[129,130,132,136,140,143,146,149,153,156,159,162],"span",{"class":131,"line":12},"line",[129,133,135],{"class":134},"sBMFI","security",[129,137,139],{"class":138},"sfazB"," find-identity",[129,141,142],{"class":138}," -v",[129,144,145],{"class":138}," -p",[129,147,148],{"class":138}," codesigning",[129,150,152],{"class":151},"sMK4o"," |",[129,154,155],{"class":134}," grep",[129,157,158],{"class":151}," \"",[129,160,161],{"class":138},"Developer ID",[129,163,164],{"class":151},"\"\n",[100,166,168],{"id":167},"full-pipeline","Full Pipeline",[119,170,172],{"className":121,"code":171,"language":123,"meta":124,"style":124},"export SIGN_IDENTITY=\"Developer ID Application: Your Name (TEAM_ID)\"\nexport APPLE_ID=\"your@apple.id\"\nexport APPLE_PASSWORD=\"xxxx-xxxx-xxxx-xxxx\"\nexport APPLE_TEAM_ID=\"YOUR_TEAM_ID\"\n\ngit tag v0.1.0\npixi run sign       # build-release → package → sign\npixi run dmg        # create Kytos-0.1.0.dmg\npixi run notarize   # submit, wait, staple\n",[126,173,174,195,211,227,244,251,263,279,292],{"__ignoreMap":124},[129,175,176,180,184,187,190,193],{"class":131,"line":12},[129,177,179],{"class":178},"spNyl","export",[129,181,183],{"class":182},"sTEyZ"," SIGN_IDENTITY",[129,185,186],{"class":151},"=",[129,188,189],{"class":151},"\"",[129,191,192],{"class":138},"Developer ID Application: Your Name (TEAM_ID)",[129,194,164],{"class":151},[129,196,197,199,202,204,206,209],{"class":131,"line":37},[129,198,179],{"class":178},[129,200,201],{"class":182}," APPLE_ID",[129,203,186],{"class":151},[129,205,189],{"class":151},[129,207,208],{"class":138},"your@apple.id",[129,210,164],{"class":151},[129,212,213,215,218,220,222,225],{"class":131,"line":69},[129,214,179],{"class":178},[129,216,217],{"class":182}," APPLE_PASSWORD",[129,219,186],{"class":151},[129,221,189],{"class":151},[129,223,224],{"class":138},"xxxx-xxxx-xxxx-xxxx",[129,226,164],{"class":151},[129,228,230,232,235,237,239,242],{"class":131,"line":229},4,[129,231,179],{"class":178},[129,233,234],{"class":182}," APPLE_TEAM_ID",[129,236,186],{"class":151},[129,238,189],{"class":151},[129,240,241],{"class":138},"YOUR_TEAM_ID",[129,243,164],{"class":151},[129,245,247],{"class":131,"line":246},5,[129,248,250],{"emptyLinePlaceholder":249},true,"\n",[129,252,254,257,260],{"class":131,"line":253},6,[129,255,256],{"class":134},"git",[129,258,259],{"class":138}," tag",[129,261,262],{"class":138}," v0.1.0\n",[129,264,266,269,272,275],{"class":131,"line":265},7,[129,267,268],{"class":134},"pixi",[129,270,271],{"class":138}," run",[129,273,274],{"class":138}," sign",[129,276,278],{"class":277},"sHwdD","       # build-release → package → sign\n",[129,280,282,284,286,289],{"class":131,"line":281},8,[129,283,268],{"class":134},[129,285,271],{"class":138},[129,287,288],{"class":138}," dmg",[129,290,291],{"class":277},"        # create Kytos-0.1.0.dmg\n",[129,293,295,297,299,302],{"class":131,"line":294},9,[129,296,268],{"class":134},[129,298,271],{"class":138},[129,300,301],{"class":138}," notarize",[129,303,304],{"class":277},"   # submit, wait, staple\n",[100,306,308],{"id":307},"tasks","Tasks",[310,311,312,325],"table",{},[313,314,315],"thead",{},[316,317,318,322],"tr",{},[319,320,321],"th",{},"Task",[319,323,324],{},"Description",[326,327,328,342,356,366,379,389],"tbody",{},[316,329,330,336],{},[331,332,333],"td",{},[126,334,335],{},"build-release",[331,337,338,339],{},"Release configuration with ",[126,340,341],{},"ARCHS=arm64",[316,343,344,349],{},[331,345,346],{},[126,347,348],{},"package",[331,350,351,352,355],{},"Copy ",[126,353,354],{},".app"," to project root",[316,357,358,363],{},[331,359,360],{},[126,361,362],{},"sign",[331,364,365],{},"Code sign all Mach-O binaries with hardened runtime",[316,367,368,373],{},[331,369,370],{},[126,371,372],{},"dmg",[331,374,375,376],{},"Create ",[126,377,378],{},"Kytos-\u003Cversion>.dmg",[316,380,381,386],{},[331,382,383],{},[126,384,385],{},"notarize",[331,387,388],{},"Submit to Apple, wait for approval, staple ticket",[316,390,391,396],{},[331,392,393],{},[126,394,395],{},"changelog",[331,397,398],{},"Generate changelog from git log since last tag",[100,400,402],{"id":401},"notes","Notes",[105,404,405,418,431],{},[108,406,407,409,410,413,414,417],{},[126,408,335],{}," passes ",[126,411,412],{},"CODE_SIGN_INJECT_BASE_ENTITLEMENTS=NO"," to strip ",[126,415,416],{},"com.apple.security.get-task-allow",", which blocks notarization",[108,419,420,422,423,426,427,430],{},[126,421,362],{}," with a ",[126,424,425],{},"SIGN_IDENTITY"," uses ",[126,428,429],{},"--options runtime --timestamp"," (hardened runtime + secure timestamp, both required)",[108,432,433,434,436,437,439,440,443],{},"Without ",[126,435,425],{},", ",[126,438,362],{}," defaults to ad-hoc (",[126,441,442],{},"codesign --force --deep --sign -",") for local testing",[445,446,447],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":124,"searchDepth":69,"depth":69,"links":449},[450,451,452,453],{"id":102,"depth":37,"text":103},{"id":167,"depth":37,"text":168},{"id":307,"depth":37,"text":308},{"id":401,"depth":37,"text":402},"Code signing, DMG creation, and Apple notarization","md",{"icon":81},{"title":78,"icon":81,"order":27},{"title":94,"description":454},"tJnkd5KptCWpqbxPZeoshFv17VCPl6o7vnSLZKaNr2I",[461,465],{"title":462,"description":463,"path":75,"navigation":464},"Building from Source","Full build pipeline from GhosttyKit to Kytos.app",{"title":74,"icon":68,"order":21},{"title":83,"description":466,"path":84,"navigation":467},"Release history and notable changes to Kytos",{"icon":85,"order":86},1774809106795]