Commit graph

40 commits

Author SHA1 Message Date
Michael Winter 5f9ce31127 Fix title and date wrapping on mobile 2026-03-07 17:39:14 +01:00
Michael Winter f9ff74ee92 Style contact, cv, and works list links with gray text 2026-03-07 15:39:28 +01:00
Michael Winter 29dace6fc8 Fix redirect from homepage and improve navigation 2026-03-07 15:32:15 +01:00
Michael Winter 1694c4a890 Fix sticky title position in works/[slug] 2026-03-07 15:18:00 +01:00
Michael Winter e4e733d87a Redesign: add responsive header, sidebar, and fix layout issues 2026-03-07 14:59:23 +01:00
Michael Winter 8bb72b5d48 Update header layout; remove page titles from body; add text links for audio/video/images 2026-03-07 14:03:53 +01:00
Michael Winter f0133650f6 Replace icons with text links; add video and images modal on pieces page 2026-03-07 13:34:02 +01:00
Michael Winter 69fab67601 Update works page with new layout; fix audio player to only autoplay on click 2026-03-07 13:16:46 +01:00
Michael Winter be041de733 Redesign about page with new layout matching pieces page 2026-03-07 11:46:54 +01:00
Michael Winter 97debc4d10 Redesign with hamburger menu and separate pages for pieces/writings/albums/performances/lectures 2026-03-07 11:28:55 +01:00
Michael Winter 6e9f859d59 Make mobile and desktop behave identically
- 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
2026-03-06 18:53:35 +01:00
Michael Winter 1bbb7e0250 Fix mobile handling for score and document icons
- 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
2026-03-06 18:36:40 +01:00
Michael Winter 49f427256f Always show nav on works page regardless of item count 2026-03-06 17:26:58 +01:00
Michael Winter 54ab2d8b24 Add CSS-only mobile handling for PDFs
- 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
2026-03-06 17:12:33 +01:00
Michael Winter d5fc1eed21 Add mobile-friendly
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
2026-03-06 16:31:36 +01:00
Michael Winter 8f73a3388e Clean up navigation links with hover underline
- Add hover:underline to header nav links
- Add hover:underline to works links
- Rename /work/ route to /works/
- Include works.json manual tweak
2026-03-06 15:49:29 +01:00
Michael Winter 6ffe5aa1fc Add work pages with hash-based modal URLs and proper 404 handling
- 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
2026-03-06 15:08:30 +01:00
Michael Winter 635cbe0482 Add shareable work pages with modal support
- 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
2026-03-06 10:23:45 +01:00
Michael Winter 9af20c1e5d Add shareable URLs for works with scores
- 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
2026-03-06 09:19:25 +01:00
Michael Winter c69a14d59e Update CV skills and resume details 2026-03-05 18:28:55 +01:00
Michael Winter 96b5dc4ccf Events: performer dash, legacy removal; works_list: URL updates, en dash; CV: en dash 2026-02-28 10:20:50 +01:00
Michael Winter 7bb9cf6dea Index: style updates, Events: European dates, CV/works_list: grey year headers 2026-02-28 03:04:18 +01:00
Michael Winter a2bccf7871 CV: sort lectures by date, Events: show month/year for lectures 2026-02-28 02:37:12 +01:00
Michael Winter 95b3f4ab59 Admin: add reverse chronological sorting and fix cache 2026-02-27 22:30:30 +01:00
Michael Winter a62ea09760 Update ID generation, CV formatting, and regenerate IDs 2026-02-27 22:15:47 +01:00
Michael Winter 161d23aba7 Update CV: improve teaching format, publications, and add publications section 2026-02-27 16:34:19 +01:00
Michael Winter 2268f0c38c chore: Add hybrid rendering, CSP fixes, memory config 2026-02-27 09:15:37 +01:00
Michael Winter 44b443d5ba Major update: Add Nuxt 4 project with README, GPL LICENSE, .env_template; update .gitignore to exclude session files and .env 2026-02-23 19:57:24 +01:00
Michael Winter a666fcef42 Align icons to top in pieces, writings, and about page 2026-02-19 18:05:59 +01:00
Michael Winter cf9fb1c762 Center albums on index page 2026-02-19 17:08:08 +01:00
Michael Winter 1089c9fe92 Use NuxtImg consistently for all images 2026-02-19 16:54:14 +01:00
Michael Winter 477ebddcd3 Add search/filter to collections and fuzzy search to files 2026-02-19 16:29:41 +01:00
Michael Winter 57aaa96a59 Add file manager to admin panel with upload, list, and delete functionality 2026-02-19 16:20:02 +01:00
Michael Winter 5202d5f8e1 Add admin panel with password protection and JSON editing 2026-02-19 15:56:20 +01:00
Michael Winter 2ed382c741 Open PDFs in modal iframe instead of new tab 2026-02-19 01:09:17 +01:00
Michael Winter 789389af65 Fix works_list.vue for clean JSON data format 2026-02-18 22:00:11 +01:00
Michael Winter 711b5b93c2 Clean up data files and fix icon/PDF links
- Clean all JSON data files: convert MongoDB format to clean JSON
  - works.json, images.json, publications.json, pubs.json, talks.json
  - releases.json, album_art.json, scores.json, my_image_gallery.json
  - events.json (with legacy program → program transformation)
  - resume.json (simplified structure)
- Simplify all API routes (remove cleanData functions)
- Fix PDF links to open in new tab (scores, writings, albums)
- Upgrade to Nuxt 4.3.1 and fix carousel (nuxt-swiper)
- Replace nuxt-icon with @nuxt/icon
- Fix IconButton component for new tab links
- Update cv.vue for resume data structure changes
- Add icon collections (@iconify-json packages)
2026-02-18 20:16:09 +01:00
Michael Winter 61332c28ef Upgrade to Nuxt 4 and fix icon issues
- Upgrade from Nuxt 3.6.0 to Nuxt 4.3.1
- Replace nuxt-icon with @nuxt/icon (Nuxt 4 compatible)
- Install missing icon collections (@iconify-json/ion, heroicons, etc.)
- Fix icon colors: use style instead of color prop
- Add AGENTS.md with coding guidelines
- Fix icon alignment in index.vue (items-center)
2026-02-18 17:34:37 +01:00
Michael Winter 72d2d67842 Improve print styles: add page margins and prevent awkward breaks 2026-02-18 05:30:42 +01:00
Michael Winter 22a3b8d00f Initial commit: Nuxt portfolio with local data 2026-02-18 03:06:14 +01:00