[{"data":1,"prerenderedAt":542},["ShallowReactive",2],{"navigation_docs":3,"-apps-overview":217,"-apps-overview-surround":537},[4,25,41,84,126,165,201],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":24},"Overview","i-lucide-house","\u002Fgetting-started","1.getting-started",[10,14,19],{"title":11,"path":12,"stem":13,"icon":6},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Project structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure","i-lucide-folder-tree",false,{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":24},"Architecture","i-lucide-cpu","\u002Farchitecture","3.architecture",[31,36],{"title":32,"path":33,"stem":34,"icon":35},"Core, themes, and apps","\u002Farchitecture\u002Foverview","3.architecture\u002F1.overview","i-lucide-layers",{"title":37,"path":38,"stem":39,"icon":40},"Kits and extension modules","\u002Farchitecture\u002Fkits","3.architecture\u002F3.kits","i-lucide-puzzle",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":24},"Apps","i-lucide-app-window","\u002Fapps","4.apps",[47,51,55,60,64,69,74,79],{"title":5,"path":48,"stem":49,"icon":50},"\u002Fapps\u002Foverview","4.apps\u002F1.overview","i-lucide-info",{"title":52,"path":53,"stem":54,"icon":23},"Package layout","\u002Fapps\u002Fpackage-layout","4.apps\u002F2.package-layout",{"title":56,"path":57,"stem":58,"icon":59},"Create from scratch","\u002Fapps\u002Fcreate-from-scratch","4.apps\u002F3.create-from-scratch","i-lucide-list-checks",{"title":61,"path":62,"stem":63,"icon":40},"Module and runtime","\u002Fapps\u002Fmodule-and-runtime","4.apps\u002F4.module-and-runtime",{"title":65,"path":66,"stem":67,"icon":68},"Plugins","\u002Fapps\u002Fplugins","4.apps\u002F5.plugins","i-lucide-plug",{"title":70,"path":71,"stem":72,"icon":73},"Windows and commands","\u002Fapps\u002Fwindows-and-commands","4.apps\u002F6.windows-and-commands","i-lucide-layout-panel-top",{"title":75,"path":76,"stem":77,"icon":78},"Playground","\u002Fapps\u002Fplayground","4.apps\u002F7.playground","i-lucide-flask-conical",{"title":80,"path":81,"stem":82,"icon":83},"Build and publish","\u002Fapps\u002Fbuild-and-publish","4.apps\u002F8.build-and-publish","i-lucide-package",{"title":85,"icon":86,"path":87,"stem":88,"children":89,"page":24},"Themes","i-lucide-palette","\u002Fthemes","5.themes",[90,93,98,102,106,111,116,121],{"title":5,"path":91,"stem":92,"icon":50},"\u002Fthemes\u002Foverview","5.themes\u002F1.overview",{"title":94,"path":95,"stem":96,"icon":97},"Theme anatomy","\u002Fthemes\u002Ftheme-anatomy","5.themes\u002F2.theme-anatomy","i-lucide-component",{"title":99,"path":100,"stem":101},"Create From Scratch","\u002Fthemes\u002Fcreate-from-scratch","5.themes\u002F3.create-from-scratch",{"title":103,"path":104,"stem":105,"icon":68},"Theme plugins","\u002Fthemes\u002Fplugins","5.themes\u002F4.plugins",{"title":107,"path":108,"stem":109,"icon":110},"Styling and Tailwind","\u002Fthemes\u002Fstyling-and-tailwind","5.themes\u002F5.styling-and-tailwind","i-lucide-brush",{"title":112,"path":113,"stem":114,"icon":115},"Pages and boot flow","\u002Fthemes\u002Fpages-and-boot-flow","5.themes\u002F6.pages-and-boot-flow","i-lucide-power",{"title":117,"path":118,"stem":119,"icon":120},"Theme and optional modules","\u002Fthemes\u002Ftheme-and-optional-modules","5.themes\u002F7.theme-and-optional-modules","i-lucide-link",{"title":122,"path":123,"stem":124,"icon":125},"Window chrome and nav buttons","\u002Fthemes\u002Fwindow-chrome-and-nav-buttons","5.themes\u002F8.window-chrome-and-nav-buttons","i-lucide-square-mouse-pointer",{"title":127,"icon":128,"path":129,"stem":130,"children":131,"page":24},"Client & CLI","i-lucide-terminal","\u002Fsetup","6.setup",[132,136,141,146,151,156,161],{"title":133,"path":134,"stem":135,"icon":128},"desktop CLI","\u002Fsetup\u002Fdesktop-cli","6.setup\u002F1.desktop-cli",{"title":137,"path":138,"stem":139,"icon":140},"Package linking","\u002Fsetup\u002Fpackage-linking","6.setup\u002F2.package-linking","i-lucide-link-2",{"title":142,"path":143,"stem":144,"icon":145},"Monorepo and workspace","\u002Fsetup\u002Fmonorepo-workspace","6.setup\u002F3.monorepo-workspace","i-lucide-blocks",{"title":147,"path":148,"stem":149,"icon":150},"desktop.config.ts","\u002Fsetup\u002Fdesktop-config","6.setup\u002F4.desktop-config","i-lucide-file-code",{"title":152,"path":153,"stem":154,"icon":155},"Migrate themes, apps, and modules (3.3.2)","\u002Fsetup\u002Fmigrate-packages-3.3.2","6.setup\u002F5.migrate-packages-3.3.2","i-lucide-arrow-right-left",{"title":157,"path":158,"stem":159,"icon":160},"Migrate themes, apps, and modules (3.4)","\u002Fsetup\u002Fmigrate-packages-3.4","6.setup\u002F6.migrate-packages-3.4","i-lucide-arrow-up-right",{"title":162,"path":163,"stem":164},"Troubleshooting","\u002Fsetup\u002Ftroubleshooting","6.setup\u002F7.troubleshooting",{"title":166,"icon":167,"path":168,"stem":169,"children":170,"page":24},"Internals","i-lucide-book-open","\u002Finternals","7.internals",[171,176,181,186,191,196],{"title":172,"path":173,"stem":174,"icon":175},"Boot sequence","\u002Finternals\u002Fboot-sequence","7.internals\u002F1.boot-sequence","i-lucide-list-ordered",{"title":177,"path":178,"stem":179,"icon":180},"Stores and composables","\u002Finternals\u002Fstores-and-composables","7.internals\u002F2.stores-and-composables","i-lucide-database",{"title":182,"path":183,"stem":184,"icon":185},"Core components","\u002Finternals\u002Fcore-components","7.internals\u002F3.core-components","i-lucide-layout-grid",{"title":187,"path":188,"stem":189,"icon":190},"Dialog provider","\u002Finternals\u002Fdialog-provider","7.internals\u002F4.dialog-provider","i-lucide-message-square",{"title":192,"path":193,"stem":194,"icon":195},"Kernel contract","\u002Finternals\u002Fkernel-contract","7.internals\u002F5.kernel-contract","i-lucide-shield-check",{"title":197,"path":198,"stem":199,"icon":200},"Shell identity","\u002Finternals\u002Fshell-identity","7.internals\u002F6.shell-identity","i-lucide-user",{"title":202,"icon":203,"path":204,"stem":205,"children":206,"page":24},"Reference","i-lucide-book-marked","\u002Freference","8.reference",[207,212],{"title":208,"path":209,"stem":210,"icon":211},"Glossary","\u002Freference\u002Fglossary","8.reference\u002F1.glossary","i-lucide-book-a",{"title":213,"path":214,"stem":215,"icon":216},"Ecosystem","\u002Freference\u002Fuseful-links","8.reference\u002F2.useful-links","i-lucide-external-link",{"id":218,"title":5,"body":219,"description":530,"extension":531,"links":532,"meta":533,"navigation":534,"path":48,"seo":535,"stem":49,"__hash__":536},"docs\u002F4.apps\u002F1.overview.md",{"type":220,"value":221,"toc":521},"minimark",[222,249,254,354,358,422,431,451,455,458,513],[223,224,225,226,230,231,234,235,244,245,248],"p",{},"An ",[227,228,229],"strong",{},"OWD app"," is a ",[227,232,233],{},"publishable Nuxt module",". When listed in ",[227,236,237,240,241],{},[238,239,147],"code",{}," → ",[238,242,243],{},"apps",", it registers ",[227,246,247],{},"desktop programs",": launcher entries, window models, and commands. Apps do not replace the client — they plug into it.",[250,251,253],"h2",{"id":252},"what-an-app-provides","What an app provides",[255,256,257,270],"table",{},[258,259,260],"thead",{},[261,262,263,267],"tr",{},[264,265,266],"th",{},"Concept",[264,268,269],{},"Role",[271,272,273,293,313,337],"tbody",{},[261,274,275,286],{},[276,277,278,281,282,285],"td",{},[227,279,280],{},"Nuxt module"," (",[238,283,284],{},"defineNuxtModule",")",[276,287,288,289,292],{},"Adds components, plugins, Tailwind paths, optional ",[238,290,291],{},"runtimeConfig",".",[261,294,295,300],{},[276,296,297],{},[227,298,299],{},"Runtime plugin",[276,301,302,303,306,307,312],{},"Client-only plugin named ",[238,304,305],{},"owd-\u003Cslug>-register"," calls ",[227,308,309],{},[238,310,311],{},"defineDesktopApp(...)"," with the app configuration.",[261,314,315,322],{},[276,316,317],{},[227,318,319],{},[238,320,321],{},"ApplicationConfig",[276,323,324,325,328,329,332,333,336],{},"Stable id, title, icons, ",[227,326,327],{},"windows"," (models), ",[227,330,331],{},"entries"," (menu items), ",[227,334,335],{},"commands"," (actions).",[261,338,339,347],{},[276,340,341,281,344,285],{},[227,342,343],{},"Build",[238,345,346],{},"@nuxt\u002Fmodule-builder",[276,348,349,350,353],{},"Outputs ",[238,351,352],{},"dist\u002Fmodule.mjs"," consumed by the desktop like any other Nuxt module.",[250,355,357],{"id":356},"reference-repositories","Reference repositories",[255,359,360,370],{},[258,361,362],{},[261,363,364,367],{},[264,365,366],{},"Repo",[264,368,369],{},"Why study it",[271,371,372,392,406],{},[261,373,374,385],{},[276,375,376],{},[377,378,382],"a",{"href":379,"rel":380},"https:\u002F\u002Fgithub.com\u002Fowdproject\u002Fapp-about",[381],"nofollow",[238,383,384],{},"app-about",[276,386,387,388,391],{},"Minimal complete app — singleton window, ",[238,389,390],{},"configKey",", playground launch plugin.",[261,393,394,403],{},[276,395,396],{},[377,397,400],{"href":398,"rel":399},"https:\u002F\u002Fgithub.com\u002Fowdproject\u002Fapp-todo",[381],[238,401,402],{},"app-todo",[276,404,405],{},"Multi-window app, launch plugin pattern.",[261,407,408,416],{},[276,409,410],{},[377,411,412,415],{"href":193},[238,413,414],{},"client"," validate fixture",[276,417,418,419,292],{},"Smallest valid module checked by ",[238,420,421],{},"desktop validate",[250,423,425,426,430],{"id":424},"what-it-should-not-do","What it should ",[427,428,429],"em",{},"not"," do",[432,433,434,444],"ul",{},[435,436,437,438,443],"li",{},"Do not depend on a specific theme (Win95, Nova, etc.): depend only on ",[227,439,440],{},[238,441,442],{},"@owdproject\u002Fcore"," as a peer and its public APIs.",[435,445,446,447,450],{},"Do not assume fixed host URL routes: the app runs ",[227,448,449],{},"inside"," the desktop (windows, not necessarily global router paths).",[250,452,454],{"id":453},"learning-path","Learning path",[223,456,457],{},"Follow this order for a first app:",[459,460,461,470,475,488,493,500,505],"ol",{},[435,462,463,465,466,469],{},[377,464,52],{"href":53}," — folder tree and ",[238,467,468],{},"package.json"," exports.",[435,471,472,474],{},[377,473,56],{"href":57}," — end-to-end tutorial (recommended starting point).",[435,476,477,479,480,483,484,487],{},[377,478,61],{"href":62}," — ",[238,481,482],{},"module.ts",", ",[238,485,486],{},"app.config.ts",", Tailwind.",[435,489,490,492],{},[377,491,65],{"href":66}," — register plugin vs playground launch plugin.",[435,494,495,479,497,499],{},[377,496,70],{"href":71},[238,498,321],{}," details.",[435,501,502,504],{},[377,503,75],{"href":76}," — local dev mini-desktop.",[435,506,507,479,509,512],{},[377,508,80],{"href":81},[238,510,511],{},"prepack",", npm, validation.",[223,514,515,516,518,519,292],{},"Also see ",[377,517,147],{"href":148}," and ",[377,520,137],{"href":138},{"title":522,"searchDepth":523,"depth":523,"links":524},"",2,[525,526,527,529],{"id":252,"depth":523,"text":253},{"id":356,"depth":523,"text":357},{"id":424,"depth":523,"text":528},"What it should not do",{"id":453,"depth":523,"text":454},"What an Open Web Desktop application is and how it plugs into the core.","md",null,{},{"icon":50},{"title":5,"description":530},"-apTw7d7daMPBgkEbUmwJikRzmSjUIGCXd9UXCjfgMY",[538,540],{"title":37,"path":38,"stem":39,"description":539,"icon":40,"children":-1},"core shell\u002Fexplorer, kit-primevue, module-fs, and deprecated kits.",{"title":52,"path":53,"stem":54,"description":541,"icon":23,"children":-1},"Recommended folder layout for an OWD app module (src, playground, dist).",1782171654422]