- Drop ShapePieceDTO struct; introduce ShapeSO (created via Assets > Create
> Darkmatter > Drawing > Shape). Sprite, snap radii, default size all on
the SO. Slot pose lives on SlotMarker's RectTransform per drawing.
- IDrawingTemplate.Pieces is now IReadOnlyList<ShapeSO> — shapes reusable
across drawings; per-drawing layout authored in a Drawing.prefab of
SlotMarkers.
- ShapePieceUI is one prefab with [SerializeField] ShapeSO _shape;
Assign(shape) at spawn refreshes Image.sprite + RectTransform.sizeDelta
+ derives PieceId from _shape.Id. Matching is by ShapeSO reference
equality, not string id.
- Update content layout: Content/Gameplay/Shapes/, Drawings/<id>/Drawing.prefab,
Prefabs/ShapePiece.prefab.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Rename IDrawingTemplate.Thumbnail → DefaultThumbnail (authored fallback)
- Add IGalleryService.GetLatestThumbnailAsync(templateId) for catalog grid
- DrawingCatalog cells show latest user capture when available, else default;
refresh on ArtworkSavedSignal so progress reflects without a reopen
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>