Types every remaining any in AssetsGrid.vue (its own state + the
methods matching MjrAssetsGridExpose's signatures) and
VirtualAssetGridHost.vue's props (scrollElement as a real Ref/element
union, onCardRendered/onCardDblclick with their actual call-site
argument shapes using MjrAssetLike).
ui/vue any count: 78 -> 1. The one survivor is MjrGridContainer's
`Record<string, any>` index signature (VirtualAssetGridHost.vue) --
already documented in a comment as deliberate: ~30 heterogeneous
_mjr* properties (functions, Maps, strings, booleans) legacy
controller code reads/writes on the grid container DOM node, where an
`unknown` index signature would force a cast at every one of those
call sites for no real safety gain.
Build + full vitest suite (831 tests) pass. Live-verified against the
running ComfyUI instance.