## Summary
- Define `touch:` Tailwind variant using `@media (hover: none)` to
target touch devices
- Add `touch:opacity-100` to `TreeExplorerTreeNode` for node action
buttons
- Add `useMediaQuery('(hover: none)')` to `MediaAssetCard` for action
overlay visibility
## Problem
On touch devices, sidebar buttons that appear on hover are inaccessible
because:
1. The `touch:` Tailwind variant was used but never defined (classes
silently ignored)
2. `TreeExplorerTreeNode` had no touch support for action buttons
3. `MediaAssetCard` used JS-based `useElementHover` which doesn't work
on touch
## Screenshots (Touch Device Emulation)
### Before (main branch)
- No "Generated"/"Imported" tabs visible in header
- Only duration chips shown on cards, no action buttons (zoom, menu)

### After (with fix)
- "Generated"/"Imported" tabs visible in header
- Action buttons (zoom, menu) visible on left of cards
- Duration chips moved to right side

## Test plan
- [ ] On touch device: verify Media Assets sidebar
"Imported"/"Generated" tabs are visible
- [ ] On touch device: verify Node Library filter buttons are visible
- [ ] On touch device: verify tree node action buttons (bookmark, help)
are visible
- [ ] On touch device: verify media asset card zoom/menu buttons are
visible
- [ ] On desktop with mouse: verify hover behavior still works as
expected
* better badges for empty/loading model library folders
for #945
* fix total count on loaded nodes
* fix test break
* additional test fix
* use a null prop fallback instead of having to explicitly calc
* patch
* basic/empty model library sidebar tab
in-progress
* make it actually list out models
* extremely primitive search impl
* list out available folders
(incomplete list atm)
* load list dynamically
* nice lil loading icon
* that's not doing anything
* run autoformatter
* fix up some absolute vue shenanigans
* swap to pi-box
* is_fake_object
* i think apply the tailwind thingo
* trim '.safetensors' from end of display title
* oop
* after load, retain title if no new title is given
* is_load_requested to prevent duplication
* dirty initial model metadata load & preview
based on node preview code
* update model store tests
* initial image icon for model lib
* i hate this
* better empty spacer
* add api handler for '/models'
* load model folders list instead of hardcoding
* add a 'no content' placeholder for empty folders
* autoformat
* autoload model metadata
* error handling on metadata loading
* larger model icons
* click a model to spawn a node for it
* draggable model nodes
* add a setting for whether to autoload or not
* autoformat will be the death of me
* cleanup promise code
* make the model preview actually half-decent
* revert bad unchecked change
* put registration back
* Basic move
* Add back node bookmark
* Move node preview
* Fix drag node to canvas
* Restore click node to add to canvas
* Split bookmark tree and library tree
* Migrate rename and delete context menu
* Fix expanded keys
* Split components
* Support extra menu items
* Context menu only for folder
* Migrate add folder
* Handle drop
* Store color customization
* remove extra padding
* Do not show context menu if no item
* Hide divider if no bookmark
* Sort bookmarks alphabetically default
* nit
* proper edit
* Update test selectors
* Auto expand on item drop
* nit
* Fix tests
* Search also searches bookmarks tree
* Add serach playwright test