Commands and settings
Everything the extension adds to VS Code. What the underlying flags mean belongs to the CLI, and daybrite.dev/docs/cli documents that.
Commands
All of these are under the Day category in the command palette.
Running
| Command | What it does |
|---|---|
| Run Selected Targets | Launches every ticked target of the focused project, one task each |
| Run All Projects | Launches every ticked target in every project in the window |
| Build Selected Targets | Builds them without launching |
| Stop All | Stops every run this extension started |
Choosing what runs
| Command | What it does |
|---|---|
| Select Targets | Ticks targets from a quick pick |
| Select Build Mode | debug or release |
| Select Locale | Sets --locale for later runs |
| Select Dayscript | Picks a .yaml under dayscript/ |
| Select Log Level | Sets DAY_LOG for later launches |
| Select Project | Chooses which project the view and the Run button act on |
| Toggle Verbose Build Output | Flips day.verbose for the focused project |
| Toggle Keep App Running After Script | Flips day.script.keepAppRunning |
Creating and checking
| Command | What it does |
|---|---|
| New Project… | The scaffolding wizard — an app, a piece or a part |
| Get Started with Day | Opens the walkthrough |
| Add Target… | Adds a target to the focused project with day project add-target |
| Open Day.toml | Opens the focused project’s Day.toml in the editor |
| Reveal in Explorer View | Selects the focused project’s folder in the Explorer |
| Open Day Extension Settings | Opens the Settings editor on the focused project’s own Day settings |
| Lint Project | Runs day lint and shows the findings in the editor |
| Doctor (check toolchains) | Runs day doctor in a terminal |
| Refresh | Re-reads every project |
| Install the day CLI… | Offers the install routes for your platform |
| Open Settings | Opens this extension’s settings |
| Show Log | Opens the Day output channel |
Per-target Run, Stop, Restart and Build, per-project Run and Stop, the + that adds a device to a mobile target, and a device row’s own Play, Stop, Remove Device and Start/Stop Simulator (Emulator on Android) are inline buttons and context-menu entries on their rows rather than palette commands.
Add Target… is also the + on each project’s Targets row, and an entry on that row’s and the project row’s context menus. From a row it adds to that row’s project, whichever project is focused. Targets the project already has are listed with a check mark.
A project row’s context menu starts with Open Day.toml, Reveal in Explorer View and Open
Day Extension Settings, which act on that row’s project. Opening Day.toml focuses the project
too, as opening any of its files does. When the project is the only folder in the window, the
Explorer has no row for that folder, so Reveal in Explorer View selects the project’s Day.toml
instead. Open Day Extension Settings shows this extension’s settings where the project’s own
values live: the Workspace tab in a window with one folder, and the project’s folder tab in a
window with several. Open Settings shows the same settings on the User tab. Clicking the
row itself focuses the project without opening anything.
Two more commands sit on the targets that carry a native project to open:
| Right-click | On | What it opens |
|---|---|---|
| Open in Android Studio | android-mdc |
platform/android, the Gradle root |
| Open in Xcode | ios-uikit, on macOS |
platform/ios/DayApp.xcodeproj |
| Open in Xcode | macos-appkit, on macOS |
platform/macos/DayApp.xcodeproj |
Each is scaffolded source that day new wrote and your app owns, so none of them needs a build
first. A row offers the entry only when that directory is actually in the project.
Settings
Finding the CLI
| Setting | Default | What it controls |
|---|---|---|
day.cliVersion |
main |
Which day-cli Day: Install the day CLI… builds from source. main = the development branch, anything else = that git tag or revision, empty = the default. main for now because releases still trail the branch; the default becomes the newest release once they do not. The build goes into the extension’s own storage, not onto your PATH. |
day.cliPath |
day |
Path to the CLI. See how it resolves when left at the default. |
day.cliSource |
"" |
Path to a day source checkout. Every CLI call becomes cargo run against it, so edits to the CLI reach the next build with no rebuild step. Takes precedence over day.cliPath. |
Defaults for a run
| Setting | Default | What it controls |
|---|---|---|
day.defaultProfile |
debug |
Build mode for a project the view has not seen before |
day.defaultLocale |
"" |
Default --locale; empty means the app or system default |
day.script.keepAppRunning |
true |
Keep the app alive after its dayscript finishes, so you can extend the script and drive it again |
Per project
These are folder-scoped: put them in one app’s .vscode/settings.json and they apply to that app
alone, which is how several apps in one window run with different log levels or environments. The
Day view’s Configuration rows write to the focused project’s folder.
| Setting | Default | What it controls |
|---|---|---|
day.verbose |
false |
Run with --verbose, showing every sub-command a build executes and its raw output |
day.logLevel |
trace |
DAY_LOG level passed to every launch as --env; a DAY_LOG in day.extraEnv wins |
day.extraEnv |
{} |
KEY=VALUE pairs passed to every launch as --env |
day.hideUnavailableTargets |
true |
Leave the targets this host cannot build out of the Targets list; the heading says how many. Off lists them at the bottom, greyed out with the reason |
Toolchain locations
Exported for every day command the extension runs — builds, launches, device listing, and
day doctor — so Doctor reports on the same toolchains your builds will use. That matters most
when VS Code was launched from the Dock or Start menu and inherited none of your shell’s
environment.
| Setting | Default | What it controls |
|---|---|---|
day.androidSDKHome |
"" |
Android SDK directory. Exported as ANDROID_HOME and ANDROID_SDK_ROOT, with its platform-tools/ and emulator/ added to the task PATH. (ANDROID_SDK_HOME is a different, legacy variable and is deliberately not set.) |
day.androidNDKHome |
"" |
Android NDK directory for the android-mdc cross-compile. Exported as ANDROID_NDK_HOME. |
day.xcodeDeveloperDirectory |
"" |
The Xcode to build Apple targets with — the .app or its Contents/Developer. Exported as DEVELOPER_DIR, which xcrun, xcodebuild and simctl read directly. |
day.harmonyNDKHome |
"" |
OpenHarmony NDK native directory for harmony-arkui; empty auto-detects. Its toolchains/ joins the task PATH so hdc is found. |
The editor
| Setting | Default | What it controls |
|---|---|---|
day.followActiveEditor |
true |
Focus the Day project the active editor’s file belongs to |
day.newProject.openAfterCreate |
ask |
What to do with a scaffolded project: ask, open, openNewWindow or addToWorkspace |
day.showWalkthroughOnStartup |
false |
Open the walkthrough every time a window opens, rather than once per install |
day.debug.adapter |
auto |
Which Rust debugger F5 hands the binary to, or none to disable delegation |
day.mcp.enabled |
true |
Register an MCP server for agent mode — one per Day project in the window, labelled Day: <app title> |
Task properties
Tasks of type day accept:
| Property | Required | Values |
|---|---|---|
command |
yes | build or launch |
target |
yes | A target id, e.g. macos-appkit |
profile |
no | debug or release |
locale |
no | A BCP-47 tag |
script |
no | Path to a dayscript, relative to the project |
project |
no | Project directory, for multi-root workspaces |
keepAlive |
no | Overrides day.script.keepAppRunning for this task |
Two problem matchers ship with it: $day-rustc for a one-shot build, and $day-rustc-watch for a
long-running task that rebuilds.
Every target is available as a task without any configuration on your part — Tasks: Run Task →
day. To pin one to ⌘⇧B or a keybinding, write it into .vscode/tasks.json:
{
"type": "day",
"command": "launch",
"target": "macos-appkit",
"profile": "debug",
"script": "dayscript/demo.yaml",
"problemMatcher": ["$day-rustc"]
}
Launch attributes
Debug configurations of type day take target, profile, locale, script, keepAlive and
project — the same set as tasks. Omitting target launches whatever is ticked in the Day view.
{
"type": "day",
"request": "launch",
"name": "Day: Run",
"target": "macos-appkit"
}
On a desktop target, Start Debugging builds the app and hands the binary to a Rust debugger you
already have installed, so breakpoints in .rs files are real. Mobile and web targets launch
without a debugger attached.
What lives elsewhere
The extension adds no build logic of its own; it runs the CLI and shows you the result. For the underlying behaviour:
- CLI reference — every subcommand and flag
- Platforms — what each target builds and needs
- dayscript — the script format and its steps
- Packaging —
day pack, signing and distribution - Day for agents — the MCP tools