Issues
What did not work while making the show, grouped by where it has to be fixed. 12 issues across 11 apps.
In the webxdc widget (4)
In the widget's app runner (2)
Image Album: AVIF compression never finishes
With the default speed the pictures stay at Encoding…: the AVIF encoder runs in a module worker started from /assets/encoder-….js, outside the runner's /app/<key>/ path, so the worker's own imports (avif_enc-….js) are not served (404). The demo uses no processing, which works.
widget deep test test/real/all/deep/image-album.json: Failed to fetch dynamically imported module …/assets/avif_enc-5lMPN1SA.js; not re-checked in this recording
With the default speed the pictures stay at Encoding…: the AVIF encoder runs in a module worker started from /assets/encoder-….js, outside the runner's /app/<key>/ path, so the worker's own imports (avif_enc-….js) are not served (404). The demo uses no processing, which works.
widget deep test test/real/all/deep/image-album.json: Failed to fetch dynamically imported module …/assets/avif_enc-5lMPN1SA.js; not re-checked in this recording
Next-Tools: Start page shows "404 Not Found"
The app (a Next.js export) opens on its own 404 page instead of the tool overview: its router does not know the runner's path (/app/<key>/index.html). The sidebar works, and every tool opened from it works (client-side navigation); a reload on a tool page has nothing to serve (deep test).
recording 2026-10-26 04:15, Ada at t=2: "404 Not Found / Back home" in the main pane; case converter, UUIDs and hash text then work
The app (a Next.js export) opens on its own 404 page instead of the tool overview: its router does not know the runner's path (/app/<key>/index.html). The sidebar works, and every tool opened from it works (client-side navigation); a reload on a tool page has nothing to serve (deep test).
recording 2026-10-26 04:15, Ada at t=2: "404 Not Found / Back home" in the main pane; case converter, UUIDs and hash text then work
In the app itself (5)
Calculator: Floating-point noise in results
21.6 × 1.1 shows 23.760000000000005: the app prints the raw JavaScript number without rounding.
First recording, frame at 10 s of clip.mp4 (display showed 23.760000000000005); the demo now avoids this sum.
21.6 × 1.1 shows 23.760000000000005: the app prints the raw JavaScript number without rounding.
First recording, frame at 10 s of clip.mp4 (display showed 23.760000000000005); the demo now avoids this sum.
Gibbonacci: The game never starts
index.html ships only the Vite legacy (SystemJS) entry; the bundle registers its start-up on window 'DOMContentLoaded' inside System.import(), which runs after that event has already fired. The page stays black and shows only the text of the inline System.import(...) script (made visible by the app's own CSS 'body *{display:flex}'). Re-dispatching DOMContentLoaded by hand makes the game appear, so this is an app bug and should hit Delta Chat too. No clip recorded.
Local widget 0.1.1 mock host: screenshot /tmp/claude-1000/-var-home-t-projects-marcade-projects-webxdc-widget/cf7ece1d-1868-4b8e-9e14-3ee83983a7be/scratchpad/show-3/out/arcanecircle-gibbonacci/start.png shows only 'System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))'; earlier deep test webxdc-widget/test/real/all/deep/arcanecircle-gibbonacci.json (canvases+buttons 0 before, canvas after re-dispatching DOMContentLoaded).
index.html ships only the Vite legacy (SystemJS) entry; the bundle registers its start-up on window 'DOMContentLoaded' inside System.import(), which runs after that event has already fired. The page stays black and shows only the text of the inline System.import(...) script (made visible by the app's own CSS 'body *{display:flex}'). Re-dispatching DOMContentLoaded by hand makes the game appear, so this is an app bug and should hit Delta Chat too. No clip recorded.
Local widget 0.1.1 mock host: screenshot /tmp/claude-1000/-var-home-t-projects-marcade-projects-webxdc-widget/cf7ece1d-1868-4b8e-9e14-3ee83983a7be/scratchpad/show-3/out/arcanecircle-gibbonacci/start.png shows only 'System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))'; earlier deep test webxdc-widget/test/real/all/deep/arcanecircle-gibbonacci.json (canvases+buttons 0 before, canvas after re-dispatching DOMContentLoaded).
KojiOS: Helper libraries not found (404)
index.html loads ./crypto-js.min.js, ./pako.min.js, ./jsencrypt.min.js, ./js.cookie.min.js, ./jsmediatags.min.js and ./heic2any.min.js, but the .xdc ships them under scripts/. The app falls back for some (console: 'CryptoJS failed to load, using fallback'); the media commands (meta, convpic) lack their libraries.
Local mock host console: 6 x 'Failed to load resource: 404', 'Pako failed to load, using fallback', 'JSEncrypt failed to load, using fallback'; unzip shows the files in scripts/
index.html loads ./crypto-js.min.js, ./pako.min.js, ./jsencrypt.min.js, ./js.cookie.min.js, ./jsmediatags.min.js and ./heic2any.min.js, but the .xdc ships them under scripts/. The app falls back for some (console: 'CryptoJS failed to load, using fallback'); the media commands (meta, convpic) lack their libraries.
Local mock host console: 6 x 'Failed to load resource: 404', 'Pako failed to load, using fallback', 'JSEncrypt failed to load, using fallback'; unzip shows the files in scripts/
KojiOS: py needs Pyodide from a CDN
index.html loads https://cdn.jsdelivr.net/pyodide/…/pyodide.js; webxdc apps have no network, so the py command cannot work.
<script src="https://cdn.jsdelivr.net/pyodide/v0.27.6/full/pyodide.js"> in index.html; earlier deep test saw it blocked by CSP
index.html loads https://cdn.jsdelivr.net/pyodide/…/pyodide.js; webxdc apps have no network, so the py command cannot work.
<script src="https://cdn.jsdelivr.net/pyodide/v0.27.6/full/pyodide.js"> in index.html; earlier deep test saw it blocked by CSP
Planner: Task list does not refresh when someone else changes it
Updates from others arrive (a notification toast pops up and the bell gets a dot), but the Overview list only shows them after the person makes a change of their own: Ben saw "Nothing to do" for ~30 s until he added a task, Ada saw Ben's task only after adding one herself, and Ben ticking "Book the van" never showed on Ada's list.
Recordings 1 and 2 (apps/omidz4t-planner/clip.mp4, shots/end-1-ada.png): Ada's list kept 2 tasks while Ben's had 3; toast with the other's task visible.
Updates from others arrive (a notification toast pops up and the bell gets a dot), but the Overview list only shows them after the person makes a change of their own: Ben saw "Nothing to do" for ~30 s until he added a task, Ada saw Ben's task only after adding one herself, and Ben ticking "Book the van" never showed on Ada's list.
Recordings 1 and 2 (apps/omidz4t-planner/clip.mp4, shots/end-1-ada.png): Ada's list kept 2 tasks while Ben's had 3; toast with the other's task visible.
In the show's recording engine (1)
Dejeweled: Grey flash in the clip when the website screenshot is taken
show.shot() screenshots the widget iframe; with the WebGL canvas of this game the recorded video shows a ~0.5 s grey frame at that moment (also seen with page.screenshot in recording 1, 5 flashes). The app itself works.
apps/arcanecircle-bejeweled/recording/1-ada.webm at main time ~32 s (mean brightness jumps from 31 to 130 for one 0.5 s sample)
show.shot() screenshots the widget iframe; with the WebGL canvas of this game the recorded video shows a ~0.5 s grey frame at that moment (also seen with page.screenshot in recording 1, 5 flashes). The app itself works.
apps/arcanecircle-bejeweled/recording/1-ada.webm at main time ~32 s (mean brightness jumps from 31 to 130 for one 0.5 s sample)