- Remove isMobile() function from IconButton and works page
- Remove mobile-specific conditionals for score and document icons
- Always show nav and score iframe on works page
- No more hydration mismatch - same HTML on server and client
- Score icon: mobile downloads PDF, desktop opens modal
- Document icon: reverts to same behavior on mobile and desktop (opens modal)
- Remove console.log from isMobile
- Remove documentLink computed property
- Score icon: mobile downloads PDF, desktop opens modal
- Document icon: mobile downloads PDF, desktop opens modal
- Works page: mobile hides score iframe, Score link downloads PDF
- Uses pure CSS (md:hidden/hidden md:block) - no JS needed
PDF handling- Score icon on mobile: direct link to PDF triggers download
- Works page: hide score iframe on mobile, Score link downloads PDF
- Desktop behavior unchanged
- Create dedicated /work/[slug] pages with sticky nav
- Use hash URLs (#type|slug) for modals instead of work page URLs
- Make works without items non-clickable on index
- Add server route to return 404 for non-existent score files
- Create IndexContent component to avoid code duplication
- Score icon links to /work/[slug] with clean URLs
- Modal opens automatically via slug prop (works with SSR)
- Crawler finds and prerenders all /work/ pages (145 routes)
- Work page redirects to / when modal closes
- Single source of truth for data fetching in IndexContent
- Score icon updates URL to /?work=[slug] without navigation
- Modal closes to reset URL back to /
- Direct /work/[slug] access redirects to /?work=[slug]
- Index page opens modal when ?work= query param is present
- Works with SSG/prerendering for /?work= routes
- Correct work titles to match works.json:
- economy study → economy study (in one dimension)
- Lamentations I: Remembering Clive Wearing → Remembering Clive Wearing
- remembering clive wearing → Remembering Clive Wearing
- Rise I from 4 Ascents for James Tenney → 4 Ascents for James Tenney
- seeds and ledgers (abstract) → seeds and ledgers 1 - 3
- steady state → steady state: a study in taxation
- flux → Flux
- Fix corrupted event ID