Part of #327 · folds #375
Handle: #E2 · Milestone: 0.0.1-beta.8 · Depends on: nothing (option (b), zero SDK/tursodb change). Blocks: #E4 (shell to host single-process wiring).
Fold note: this issue folds #375 (desktop app-type, promoted from Backlog/Triage p3). No closing keyword on this issue — the resolving PR body carries Closes #375 so the merge auto-closes the folded issue (closing keywords live in PR bodies, never issue bodies).
Scope — first-party deno desktop app type in the Aspire generator
4th branch (desktop) in packages/cli/src/kernel/templates/aspire/helpers/register/generate-register-apps.ts beside app/tauri/task; extend the AppEntry type (@netscript/aspire/types) with Type:"desktop".
Acceptance (each maps to a #375-evidenced POC finding)
- Build-order gate baked in — desktop registration
waitFor/predev the Fresh build so _fresh/ exists before packaging (no hand-edit).
--backend cef emitted (WebView2 default broken on Windows bare-metal; desktop.backend config silently ignored). CEF, not config.
- Service-discovery injection, no HTTP endpoint — same
services__<name>__http__0 wiring as app, but no withHttpEndpoint (window binds its own internal Deno.serve port).
- Opt-in gating (
Enabled:false default) so headless/CI aspire start is unaffected; random internal 127.0.0.1 port (no collision with a co-running web dashboard).
- Generator unit tests mirror the existing
generators-*_test.ts pattern; scaffold.plugins/scaffold.runtime unaffected for non-desktop configs.
Design source: design/E-desktop/epic-and-issues.md (#E2).
RFC #820 amendment (owner-ratified 2026-07-17 — PR #822)
Scope = the dev-stack desktop resource (extends the in-tree buildTauriBlock pattern) plus the single-artifact packaging hook consumed by #456. Graph packaging → SD-2 #831. Note: extends the PUBLIC @netscript/aspire ./types surface (AppType/AppEntry gain "desktop") — full jsr rubric + consumer-compile gate required.
Now also part of the Desktop Frontend epic #840 (Option A, 2026-07-17): its packaging hook feeds the native-format pipeline in #456.
Part of #327 · folds #375
Handle: #E2 · Milestone:
0.0.1-beta.8· Depends on: nothing (option (b), zero SDK/tursodb change). Blocks: #E4 (shell to host single-process wiring).Scope — first-party
deno desktopapp type in the Aspire generator4th branch (
desktop) inpackages/cli/src/kernel/templates/aspire/helpers/register/generate-register-apps.tsbesideapp/tauri/task; extend theAppEntrytype (@netscript/aspire/types) withType:"desktop".Acceptance (each maps to a #375-evidenced POC finding)
waitFor/predevthe Fresh build so_fresh/exists before packaging (no hand-edit).--backend cefemitted (WebView2 default broken on Windows bare-metal;desktop.backendconfig silently ignored). CEF, not config.services__<name>__http__0wiring asapp, but nowithHttpEndpoint(window binds its own internalDeno.serveport).Enabled:falsedefault) so headless/CIaspire startis unaffected; random internal127.0.0.1port (no collision with a co-running web dashboard).generators-*_test.tspattern;scaffold.plugins/scaffold.runtimeunaffected for non-desktop configs.Design source:
design/E-desktop/epic-and-issues.md(#E2).RFC #820 amendment (owner-ratified 2026-07-17 — PR #822)
Scope = the dev-stack desktop resource (extends the in-tree
buildTauriBlockpattern) plus the single-artifact packaging hook consumed by #456. Graph packaging → SD-2 #831. Note: extends the PUBLIC@netscript/aspire./typessurface (AppType/AppEntrygain"desktop") — full jsr rubric + consumer-compile gate required.Now also part of the Desktop Frontend epic #840 (Option A, 2026-07-17): its packaging hook feeds the native-format pipeline in #456.