## v1.1.011 — 2026-05-10
- fix: imported Live2D models that don't ship a physics file (or eyeBlink / breath data) could fail to render at all — the model card showed up correctly, but switching to it produced a fully blank pet window. The setting that controls "physics enabled / disabled" was, on these models, writing the literal value \`true\` into the slot meant to hold the physics evaluator object; the per-frame update then tried to call evaluate() on a boolean and the entire render loop crashed silently. The toggle is now a no-op on models that don't have the underlying capability — the model loads and renders normally, and a clarifying note is logged ("model has no physics") instead of a crash.
- improvement: thumbnails on imported Live2D model cards in Settings → Pet are now generated automatically. When a user-imported model has no preview image of its own, the Settings panel renders the model into the in-window detail canvas once (the same canvas you already see when you select the model on the right), grabs that frame, writes it to the model folder as preview.png, and uses it as the card thumbnail from then on — across restarts. The capture reuses the already-active rendering canvas rather than spinning up a second WebGL context, so it does not introduce extra GPU memory pressure or the cross-context texture warnings that an earlier prototype produced.
- fix: Workshop upload — when a publish attempt failed (Steam Legal Agreement not yet accepted, transient network issue, Phase A rejection, etc.) and the user pressed "publish" again from the same window after adjusting the title, tags, or preview image, the second attempt could surface a misleading "Content package does not exist or is outside the allowed directory" toast. The local .adpk produced for the first attempt was being deleted on every code path — success and failure alike — so the in-window publish state was left pointing at a file that no longer existed, and the validation step on retry rejected the request. The cleanup is now bound to a genuinely successful publish (Phase A accepted by Steam): failed publishes preserve the local .adpk so the next click can use it directly without re-running the multi-second packaging pass. Successful publishes still clean up as before, so the local packages folder does not accumulate.
- improvement: Workshop upload diagnostics — when an upload is rejected with "Content package does not exist or is outside the allowed directory", the application log now records the resolved package path, the allowed packages directory, and (when the package is missing) a snapshot of what is actually in that directory. This is a one-shot record per failure, not a periodic dump, so the log stays readable. Combined with a parallel record of where the packaging step wrote the .adpk, future reports of this error are pinpointable to "the file was never written", "the file was written then removed by an external process", or "the validation path resolved to a different location" — without requiring a back-and-forth for more information.
