Skip to content

tools: add wasm (web) target to custom-app packaging#2130

Merged
jcelerier merged 1 commit into
masterfrom
feat/wasm-custom-app-packaging
Jul 19, 2026
Merged

tools: add wasm (web) target to custom-app packaging#2130
jcelerier merged 1 commit into
masterfrom
feat/wasm-custom-app-packaging

Conversation

@jcelerier

Copy link
Copy Markdown
Member

Custom ossia score apps (the ossia-templates/score-custom-app-template flow) could be packaged for Linux/macOS/Windows but not for the browser. This adds a wasm path so a custom QML UI + score can be deployed as a static web bundle.

Changes

  • tools/create-app-wasm.sh (new) — assembles a servable site:
    • Sources the score wasm runtime from --local-installer (dir or .zip), an ossia.score-*-wasm.zip release asset, or the ossia/score-web continuous build.
    • Lays the QML tree under /app/qml, the score under /app/, compiles an optional .qrcresources.rcc.
    • Generates preload.json + index.html using Qt's official qtLoad({ arguments, qt: { preload, environment } }) mechanism (--ui /app/qml/<Main>.qml <score> --autoplay), populating the Emscripten FS at startup.
  • tools/create-app.sh — wire the wasm platform into dispatch + help.
  • .github/workflows/wasm.yaml — also zip the assembled site/ into ossia.score-<ver>-wasm.zip and upload to the continuous/tag release, so the wasm build is downloadable like every other platform (previously only pushed to score-web).

Verified

Ran create-app.sh --platform wasm on the real custom-app template (both --local-installer dir and zip sources). Served the generated bundle in a browser: the full QtQuick.Controls UI loads, the Score.UI.TextureSource renders live gfx (a running score gfx node) into the Qt Quick scene graph, PortSource shows live values, audio plays, no crash.

Note: a companion one-line change is needed in ossia/actions (package-custom-app sparse-checkout must include tools/create-app-wasm.sh) for the GitHub Action to use this.

🤖 Generated with Claude Code

Custom ossia score apps could be packaged for Linux/macOS/Windows but not for
the browser. Add a wasm path so a custom QML UI + score can be deployed as a
static web bundle:

- create-app-wasm.sh: assembles a servable site. It sources the score wasm
  runtime (a --local-installer dir/zip, an ossia.score-*-wasm.zip release asset,
  or the ossia/score-web continuous build), lays the QML tree under /app/qml and
  the score under /app/, compiles an optional .qrc to resources.rcc, and
  generates preload.json + index.html that call qtLoad() with the right
  arguments (--ui /app/qml/<Main>.qml <score> --autoplay) and Qt's official
  preload mechanism to populate the Emscripten filesystem.
- create-app.sh: wire the 'wasm' platform into the dispatch and help text.
- wasm.yaml: also zip the built site/ into ossia.score-<ver>-wasm.zip and upload
  it to the continuous/tag release, so the wasm build is downloadable like every
  other platform (previously it was only pushed to the score-web repo).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019oPj1zRcxSQX7FNni7EHM6
@jcelerier
jcelerier merged commit a8f083b into master Jul 19, 2026
42 checks passed
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