tinyjs doctor
tinyjs doctor looks for the usual reasons tinyjs or an app won't run, and says how to fix each one. Run it from your project folder to include the project checks, or from anywhere for the rest.
It only reads files. It starts no processes, opens no windows, rebuilds nothing and doesn't use the network. Exit status is 1 when any FAIL line is printed, 0 otherwise; WARN and NOTE lines don't change it.
In a terminal the labels are coloured. Piped or redirected output stays plain, and setting NO_COLOR turns colour off.
What it checks
- The install: the bundled runtime and launcher exist and are executable, and a
TINYJS_LAUNCHERoverride if one is set. In a source checkout it also warns when the launcher is older than its sources (tinyjs devandtinyjs buildrebuild it first), and on an Intel Mac that builds are Intel-only unless you pass--arch arm64or--universal. - PATH: which
tinyjsa baretinyjsruns. It warns when that is a different install from the one running doctor, or when a second install sits later on PATH, the usual cause of "I updated but nothing changed". - The webview: on Windows, the WebView2 Runtime in its usual install folders; on Linux, WebKitGTK 4.1 (
libwebkit2gtk-4.1.so.0), plus a warning when there is no desktop session (DISPLAY/WAYLAND_DISPLAY). macOS always has WebKit. - Node tooling: which of
node,npm,pnpm,yarn,bunandvpare on PATH. The plain template needs none of them; the framework templates (tinyjs new --template ...) need one. - The project, when the current folder has a
tinyjs.json: it parses, has aname(after this OS's block is merged in), itsminTinyjsVersionisn't newer than this tinyjs, the package manager itsfrontend.build/frontend.devcommands run is on PATH, and a project with apackage.jsonhas itsnode_modulesinstalled. Atinyjs.jsonwith no"$schema"line (projects made before 0.57.5) gets a note suggesting it, for editor completion; see config-schema.md. Types (tiny.d.ts,tjs.d.ts) or a coding-agent skill that differ from this tinyjs's copies get a note to runtinyjs update-project.
Limits
A clean run can't prove a window will open. Binary architecture, shared libraries other than WebKitGTK, and OS security settings (Gatekeeper, SmartScreen) aren't checked. WebView2 installed somewhere unusual, such as a fixed-version runtime, reads as not found, which is why that is a warning rather than a failure.