This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
Summary
AI summaryRemoved TypeScript non-null assertions from app.js to fix SyntaxError causing blank dashboard content.
Full changelog
Adopter-impacting regression since v0.18.9. The dashboard SPA's
app.js contained TS-style non-null assertions (shellMatch[1]!.trim())
copy-pasted from TS source. Plain JavaScript runtimes (the browser)
hit SyntaxError: Unexpected token '!' while parsing the script →
the entire module never loaded → no event listeners attached → only
the static HTML nav rendered, main content stayed empty.
Symptom from the adopter: "menu renders but contents are blank."
Why it wasn't caught earlier
- TypeScript compiler accepts the syntax (it's TS-valid in TS files)
- Unit tests don't load
app.jsin a JS runtime; they invoke the MCP
handlers directly - The build script copies the file verbatim from
src/dashboard/spa/
todist/dashboard/spa/— no transpile step that would have caught it - Live dashboard probes during v0.18.9 / v0.19.0 / v0.19.1 development
were CLI-side (curl POST /event) — the SPA was never opened in a
browser as part of the ring
Fix
Removed the two ! non-null assertions in collectSecuritySignals()
(the function added in v0.18.9 to power the skill-detail "Security
signals" panel). The values are already null-guarded by the
surrounding if checks; the TS-style assertions were redundant noise
that compiled fine in TS but broke at runtime in plain JS.
Regression guard
tests/v0.19.2-spa-syntax-guard.test.ts:
node --check src/dashboard/spa/app.js— parses the SPA under V8's
normal-JS rules (same as the browser). Catches the syntax mismatch
at test time so the SPA never ships unparseable again.- Explicit grep for
]!./]!(/)!.patterns as a belt-and-
suspenders check.
Future SPA files extend the same test. Bug class closed: any TS-only
syntax in a *.js file under src/dashboard/spa/ now fails CI.
Affected versions
v0.18.9, v0.19.0, v0.19.1 — all shipped with the broken SPA. Adopters
on any of these versions running skillfile dashboard saw the blank-
content symptom. Upgrade to v0.19.2 immediately; no other action
needed.
Banking lesson
src/dashboard/spa/*.js is plain JavaScript loaded by the browser
verbatim. Treat it as a non-TS surface — don't copy-paste expressions
from TS source. The new node --check test ensures this constraint is
enforced structurally going forward.
1816 tests total (2 new in v0.19.2 guard). Typecheck clean.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Skillscript
All releases →Related context
Related tools
Earlier breaking changes
- v0.35.0 Editing `# Deadline:` on an approved skill drops it to Draft (signature invalidates).
Beta — feedback welcome: [email protected]