Skip to content

v0.24.1 — Hotfix: server-core build (2026-05-18)

Bug Fixes

  • fix(server-core): unbreak tsc build of ai.imageModels.test.ts — Removed the .ts extension from the dynamic import('./ai.ts') (TS5097) and cast through unknown for the router structural-type mismatch (TS2352). Also deleted the stale tracked packages/server-core/src/routes/ai.js / ai.js.map build artifacts that the test originally worked around. Restores CI green.

Token/Character Artwork System Fixes (2026-05-07)

Bug Fixes

  • fix(WebGLTokenLayer): resolve token image from artworks array — The map renderer now reads from token.artworks[] via getPrimaryTokenArt() instead of the legacy token.imageUrl field. Tokens with artwork in the new system but no synced imageUrl no longer show the "?" placeholder.
  • fix(getMapImageUrl): return processedUrl for tokenized art — getMapImageUrl() in @purple-cat/shared now returns processedUrl (the pre-rendered tokenized image) when mapAppearance is 'tokenized', instead of always returning the raw imageUrl.
  • fix(TokenModal): stop duplicating source image on first artwork — When the first source image is added to a token, the system now assigns one artwork entity to both token and portrait slots instead of creating a separate portrait copy. This eliminates the source image duplication users reported.
  • fix(TokenModal): auto-tokenize processedUrl upload race — The edit-mode live-patch comparison now detects new transient processedUrl values (via a sentinel) so auto-tokenized images are uploaded and persisted immediately, rather than being silently ignored.
  • fix(TokenModal): prevent base64 data in API calls — Added safety sanitization that strips any residual data: or blob: URLs from artwork entities before sending them to the API, preventing accidental serialization of large base64 images in the database.
  • fix(initiative/chat): resolve token image from artworks — Initiative tracker entries, chat messages, party panel, and multi-token context now resolve token images from the artworks[] array instead of the legacy imageUrl field.