build(ui): build core.wasm in CI, stop committing the binary (F6) #30

Merged
developer merged 1 commits from feature/ui-finalize-f6-wasm-ci into development 2026-05-22 12:37:24 +00:00
Owner

F6 — Build core.wasm in CI (stop committing the binary)

From ui/PLAN-finalize.md F6. The core.wasm artefact was committed and
had to be rebuilt by hand on every Go-bridge change (which bit us). Now
CI builds it from source and it is no longer tracked.

What changed

  • ui/frontend/static/core.wasm and wasm_exec.js are untracked +
    gitignored
    .
  • New composite action .gitea/actions/build-wasm: actions/cache
    TinyGo 0.41.1 → install → make -C ui wasm.
  • Invoked by all three frontend-building workflows: ui-test (before
    the Playwright run — Vitest uses the fake Core and needs no wasm; the
    workflow also gains the Go setup it lacked), dev-deploy, and
    prod-build (Go already set up there).
  • Docs: ui/docs/wasm-toolchain.md, ui/README.md.

Note (scope vs plan)

The plan named only ui-test, but dev-deploy/prod-build build the
bundle on the runner too (pnpm build), so they need the wasm built
first. TinyGo is cached, so the recurring cost is the make wasm CPU,
not a per-run download.

Verification

make -C ui wasm builds locally; the push CI run passed — TinyGo
installed on the runner, make wasm ran, and Playwright passed against
the freshly-built artefact.

🤖 Generated with Claude Code

## F6 — Build core.wasm in CI (stop committing the binary) From `ui/PLAN-finalize.md` F6. The `core.wasm` artefact was committed and had to be rebuilt by hand on every Go-bridge change (which bit us). Now CI builds it from source and it is no longer tracked. ### What changed - `ui/frontend/static/core.wasm` and `wasm_exec.js` are **untracked + gitignored**. - New composite action **`.gitea/actions/build-wasm`**: `actions/cache` TinyGo 0.41.1 → install → `make -C ui wasm`. - Invoked by **all three** frontend-building workflows: `ui-test` (before the Playwright run — Vitest uses the fake Core and needs no wasm; the workflow also gains the Go setup it lacked), `dev-deploy`, and `prod-build` (Go already set up there). - Docs: `ui/docs/wasm-toolchain.md`, `ui/README.md`. ### Note (scope vs plan) The plan named only `ui-test`, but `dev-deploy`/`prod-build` build the bundle on the runner too (`pnpm build`), so they need the wasm built first. TinyGo is cached, so the recurring cost is the `make wasm` CPU, not a per-run download. ### Verification `make -C ui wasm` builds locally; the **push CI run passed** — TinyGo installed on the runner, `make wasm` ran, and Playwright passed against the freshly-built artefact. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
developer added 1 commit 2026-05-22 12:34:15 +00:00
build(ui): build core.wasm in CI, stop committing the binary (F6)
Tests · UI / test (push) Successful in 3m48s
Tests · UI / test (pull_request) Successful in 2m35s
b729036778
core.wasm and wasm_exec.js are no longer tracked (untracked + gitignored).
A reusable composite action .gitea/actions/build-wasm installs TinyGo
(actions/cache'd) and runs `make -C ui wasm`; it runs in all three
frontend-building workflows — ui-test (before Playwright; Vitest uses the
fake Core and needs no build), dev-deploy, and prod-build. ui-test gains a
Go setup (TinyGo shells out to Go); the deploy workflows already had one.

Docs: ui/docs/wasm-toolchain.md, ui/README.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
developer merged commit c066a8958e into development 2026-05-22 12:37:24 +00:00
developer deleted branch feature/ui-finalize-f6-wasm-ci 2026-05-22 12:37:24 +00:00
Sign in to join this conversation.