v0.24.1 — Hotfix: server-core build (2026-05-18)
Bug Fixes
- fix(server-core): unbreak
tscbuild ofai.imageModels.test.ts— Removed the.tsextension from the dynamicimport('./ai.ts')(TS5097) and cast throughunknownfor the router structural-type mismatch (TS2352). Also deleted the stale trackedpackages/server-core/src/routes/ai.js/ai.js.mapbuild 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[]viagetPrimaryTokenArt()instead of the legacytoken.imageUrlfield. Tokens with artwork in the new system but no syncedimageUrlno longer show the "?" placeholder. - fix(getMapImageUrl): return processedUrl for tokenized art —
getMapImageUrl()in@purple-cat/sharednow returnsprocessedUrl(the pre-rendered tokenized image) whenmapAppearanceis'tokenized', instead of always returning the rawimageUrl. - 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
processedUrlvalues (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:orblob: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 legacyimageUrlfield.