An app declaration is the DSL’s authoring manifest. It can name a default page, tone/palette/mode/branding values, wrapper or shell, locales, page order, page discovery, overrides, and explicit pages. It compiles to AUP configuration; it is not a second runtime or a replacement for blocklet routing.
A small app with an inline page
app "Nimbus" {
default home
locales [en, zh]
shell {
header {
brand "Nimbus" -> href "/"
action "Home" -> page home
}
footer "Nimbus"
}
page home "Home" {
view {
h1 "Welcome"
}
}
}shell and an explicit wrapper "wrapper.json" cannot be combined. A shell generates wrapper material that places the page content slot between header and footer; it is a concise app frame, not a full application framework.
Choose one page-discovery form deliberately
Pages may be defined inline, declared as an external tree/settings/scaffold, or discovered through a limited declaration such as pages from "pages/*.aup". That latter form is resolved by ARC’s page parser; it is not a general glob language that works outside the runtime.
Inline pages compile to pages/<name>.json. Named page navigation is checked against declared pages, which makes a missing page a source problem rather than a browser surprise.
The currently built-in recipe names are narrow (settings-shell, workspace-shell, marketing-site, and scaffold-app). Do not document an arbitrary recipe name as available until the target runtime has accepted it.
Next, read Nodes, values, and sugar and Events, navigation, and visibility.