Skip to content

chore(canvas-kit): sync vendored canvas-kit to 2026-07-07.6 - #22

Merged
jongio merged 1 commit into
mainfrom
sync-canvas-kit-2026-07-07
Jul 8, 2026
Merged

chore(canvas-kit): sync vendored canvas-kit to 2026-07-07.6#22
jongio merged 1 commit into
mainfrom
sync-canvas-kit-2026-07-07

Conversation

@jongio

@jongio jongio commented Jul 8, 2026

Copy link
Copy Markdown
Owner

What

Re-vendor the canonical create-canvas-app kit (2026-07-05.12026-07-07.6) into all six canvas extensions. The vendored canvas-kit/ copies were behind the published kit and missed the recent hardening + feature work.

Why

The extensions ship the kit verbatim (no npm, no build), so a published kit bump doesn't reach them until they're re-vendored. This sync brings in:

  • Strict action/state schema validation at the boundary (validate.mjs)
  • SSRF-safe fetch with per-redirect re-checks (net.mjs)
  • Atomic, concurrency-serialized storage tiers
  • githubStore for shared, multi-writer canvas state via the GitHub Contents API (github-store.mjs)

Scope

  • 6 extensions: code-tutor, language-tutor, news-aggregator, random-animal, stock-ticker, wiki-discover
  • Mechanical re-vendor from the canonical kit — no hand-edited kit logic
  • Two smoke-test assertions updated for the kit's stricter input validation:
    • enum errors now carry the input. path prefix (code-tutor)
    • a present-but-undefined optional prop is now type-checked, so "rate current" omits the optional article key instead of passing undefined (wiki-discover)

Verification

Ran the full CI check set locally (matches validate.yml):

  • node scripts/lint.mjs → clean (93 .mjs, 15 .json)
  • node scripts/validate-extensions.mjs → 6 extensions valid
  • node scripts/run-tests.mjs → 6 test files passed

The site gallery test is unaffected (it reads extension card metadata, not kit internals).

Re-vendor the canonical create-canvas-app kit (2026-07-05.1 -> 2026-07-07.6)
into all six canvas extensions. This pulls in the recent kit hardening and
feature work:

- Strict action/state schema validation at the boundary (validate.mjs)
- SSRF-safe fetch with per-redirect re-checks (net.mjs)
- Atomic, concurrency-serialized storage tiers
- githubStore for shared, multi-writer canvas state via the GitHub
  Contents API (github-store.mjs)

Also update two smoke-test assertions to match the kit's stricter input
validation (enum errors now carry the input path prefix; a present-but-
undefined optional prop is now type-checked, so "rate current" omits the
optional article key instead of passing undefined).

Mechanical re-vendor from the canonical kit; no hand-edited kit logic.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jongio
jongio merged commit d15d1b4 into main Jul 8, 2026
3 checks passed
@jongio
jongio deleted the sync-canvas-kit-2026-07-07 branch July 8, 2026 02:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant