Skip to content

Repository files navigation

Roves Run

Run a web project you've already built (dist/, or whatever you call it) locally with the Roves shell, straight from VS Code's own Run and Debug view — no Rust or Python toolchain, and nothing added to your project. The extension downloads the right prebuilt shell for your OS once, caches it outside your workspace, and points it at your dist/ folder directly.

This isn't a real debugger — there are no breakpoints, no variables, no stack traces. It just uses VS Code's Run and Debug UI (F5, the Debug Console, the stop button, a preLaunchTask) as a launcher, since that UI already does everything a "build, then run this" workflow needs, instead of this extension inventing its own settings/commands surface.

How it works

Add a configuration to your project's .vscode/launch.json:

{
	"version": "0.2.0",
	"configurations": [
		{
			"type": "roves",
			"request": "launch",
			"name": "Run with Roves",
			"preLaunchTask": "build",
			"distFolder": "dist"
		}
	]
}

(VS Code's own "Add Configuration…" in launch.json, or the Run and Debug view's configuration dropdown, offers a Roves: Run snippet to start from.)

preLaunchTask is a plain VS Code task — e.g. in .vscode/tasks.json:

{
	"version": "2.0.0",
	"tasks": [
		{
			"label": "build",
			"type": "shell",
			"command": "npm run build",
			"presentation": { "reveal": "silent", "close": true }
		}
	]
}

Press F5 (or Run and Debug → select this configuration → the ▷ button). The first time, this downloads roves_shell_<platform>[_steam].zip from Roves' GitHub releases for your platform, showing progress in the status bar, and caches it under VS Code's own extension storage — never inside your workspace. Every following run reuses that cached shell instantly.

It then writes a small launch.json (Roves' own, unrelated to VS Code's) next to the cached shell binary pointing at your project's dist/index.html by absolute path, and launches it — the same mechanism a real mach bundle output uses to find its own bundled content, just pointed at your project directly instead. See src/shell.ts for exactly how.

Stop it from the debug toolbar's stop button, same as any other debug session. The shell's own stdout/stderr streams into the Debug Console.

Launch configuration properties

Property Default Description
distFolder "dist" Folder (relative to the workspace root) containing your built index.html.
version "latest" Roves shell version to run, e.g. "v0.4.6". "latest" always resolves to the newest published release.
steam false Run the Steam-enabled shell variant instead of the plain one.
steamAppId "" Steam App ID to run with (writes steam_appid.txt next to the shell binary). Only used when steam is enabled.
windowSize "1280x720" Initial window size, as <width>x<height>.
extraArgs [] Extra command-line arguments passed through to the shell on launch.

Requirements

None — just a built project with an index.html somewhere. Steam builds still need Steam running locally if you want steam_appid.txt to actually resolve to anything.

Known limitations

  • Downloaded shells are cached per version/platform/Steam-variant under VS Code's global storage and never cleaned up automatically — delete them yourself (from the extension's storage folder) if you want to reclaim disk space from old versions.
  • distFolder must contain a loose (uncompressed) build — this extension doesn't pack content the way mach bundle --content-compress=auto does; it isn't needed for a local dev loop.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages