body was silently clipping all horizontal overflow. min-width:0 on
#main prevents flex child from expanding beyond container.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cells are sized in CSS px to fit at load time. Browser zoom now scales
everything uniformly; grid scrolls horizontally instead of reflowing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Images and labels scale together with a range slider (40–300px).
Grid scrolls horizontally when cells exceed viewport width.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Grid-type inventory entries now display the warped cell image from the
grid as a read-only thumbnail (highlighted with accent border) alongside
any user-uploaded images for that entry.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Templates section:
- Define JS formatter functions per template (e.g. resistor, capacitor)
- First non-null result from any formatter is used as display name
- Live preview in template editor against first component
- Display names applied in component list, detail view, and inventory rows
Grid navigation:
- Grid-type inventory entries in component detail view show a '⊞' button
to navigate directly to that grid's viewer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New 'grid' location type on inventory entries (grid_id, grid_row, grid_col)
- Clicking a grid cell shows a popup with what's stored there
- Popup has '+ Add entry' pre-filled with the cell coordinates
- Inventory dialog: 'New...' button next to component selector opens
component creation dialog on top, returns with new component selected
- Grid entries display as e.g. 'Black Component Box R3C5' in lists
- Store original filename on source image upload
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>