Commit Graph

  • 457b94005f feat(web): add /library/liked page with three sections bvandeusen 2026-04-26 17:08:06 -04:00
  • de5320a7b4 feat(web): wire LikeButton into TrackRow, AlbumCard, ArtistRow, PlayerBar bvandeusen 2026-04-26 16:56:07 -04:00
  • 6ab1fef07e feat(web): add LikeButton component bvandeusen 2026-04-26 16:47:51 -04:00
  • dd2b9318a0 feat(web): add likes TanStack Query helpers + mutations bvandeusen 2026-04-26 16:46:39 -04:00
  • c7f4adbcc3 feat(subsonic): add getStarred and getStarred2 handlers bvandeusen 2026-04-26 16:45:04 -04:00
  • 32fb3fec20 feat(subsonic): add /rest/star and /rest/unstar handlers bvandeusen 2026-04-26 16:43:20 -04:00
  • 61d96bb288 feat(api): add /api/likes/{tracks,albums,artists} endpoints bvandeusen 2026-04-26 16:23:04 -04:00
  • 780beaa248 feat(db): add M2 likes schema (general_likes, _albums, _artists) bvandeusen 2026-04-26 16:20:08 -04:00
  • a3c05aeb34 docs(plan): add M2 likes implementation plan bvandeusen 2026-04-26 15:52:42 -04:00
  • f91257a79e docs(spec): add M2 likes sub-plan design bvandeusen 2026-04-26 15:44:45 -04:00
  • e7896318b4 Merge pull request 'feat: player + search + M2 events foundation' (#19) from dev into main bvandeusen 2026-04-26 15:51:52 +00:00
  • 6ff00ea24d feat(web): mount useEventsDispatcher() in root layout bvandeusen 2026-04-26 09:44:16 -04:00
  • b6f8a0c390 feat(web): events dispatcher posts to /api/events on player transitions bvandeusen 2026-04-26 09:42:11 -04:00
  • 599a19f780 feat(subsonic): wire /rest/scrobble into playevents.Writer bvandeusen 2026-04-26 00:23:20 -04:00
  • f4e73b81b4 feat(api): add POST /api/events handler bvandeusen 2026-04-26 00:12:06 -04:00
  • 0c7e1b0408 feat(playevents): add Writer with start/end/skipped/synthetic paths bvandeusen 2026-04-25 22:32:33 -04:00
  • 73d3962fff feat(playsessions): add FindOrCreate session service (30-min rolling window) bvandeusen 2026-04-25 22:30:12 -04:00
  • 722a6784a7 feat(config): add events section (session timeout + skip rule thresholds) bvandeusen 2026-04-25 20:46:23 -04:00
  • 4fcf2c9616 feat(db): add M2 schema — play_sessions, play_events, skip_events bvandeusen 2026-04-25 20:45:44 -04:00
  • 7df48ee9bc docs(plan): add M2 events sub-plan implementation plan bvandeusen 2026-04-25 19:56:58 -04:00
  • f3b28db9d1 docs(spec): add M2 events sub-plan design bvandeusen 2026-04-25 19:39:16 -04:00
  • 7fff293054 feat(web): add three search overflow pages bvandeusen 2026-04-25 16:19:09 -04:00
  • e55520dab6 feat(web): /search page with three sections + see-all overflow links bvandeusen 2026-04-25 16:16:55 -04:00
  • ad9c984b62 feat(web): mount SearchInput in Shell header bvandeusen 2026-04-25 16:12:19 -04:00
  • 3be0dc241c feat(web): add SearchSkeleton placeholder for the search page bvandeusen 2026-04-25 16:12:19 -04:00
  • 251d165e0b feat(web): add SearchInput header component (debounced URL sync) bvandeusen 2026-04-25 16:01:25 -04:00
  • a4a5a20308 feat(web): AlbumCard + queue overlay button bvandeusen 2026-04-25 15:54:18 -04:00
  • 80b39f1713 feat(web): TrackRow div+role button with onPlay prop and + queue button bvandeusen 2026-04-25 15:37:11 -04:00
  • 7eb051c6f7 feat(web): add search query helpers (summary + 3 facet infinite queries) bvandeusen 2026-04-25 15:30:06 -04:00
  • 7dd77a4723 feat(web): add enqueueTrack, enqueueTracks, playRadio to player store bvandeusen 2026-04-25 15:22:03 -04:00
  • 8e80b6e0de feat(web): add SearchResponse and RadioResponse types bvandeusen 2026-04-25 15:02:56 -04:00
  • 1e66910823 feat(api): add /api/radio stub returning the seed track only bvandeusen 2026-04-25 15:01:39 -04:00
  • 8fd193e186 docs(plan): add web UI search implementation plan bvandeusen 2026-04-25 14:59:08 -04:00
  • 3588af83e5 docs(spec): add web UI search design bvandeusen 2026-04-25 14:49:01 -04:00
  • 4264ecf538 fix(web): trigger audio.play() during 'loading' state, not only 'playing' bvandeusen 2026-04-24 22:12:34 -04:00
  • 571eb2ec53 feat(web): mount <audio> at root layout and wire it to the player store bvandeusen 2026-04-24 21:43:03 -04:00
  • ccef9be2d3 feat(web): add PlayerBar slot to Shell bvandeusen 2026-04-24 21:42:10 -04:00
  • ed082226a0 feat(web): add PlayerBar component bvandeusen 2026-04-24 21:41:24 -04:00
  • 4bff8cc99a feat(web): make TrackRow click-to-play; pass tracks+index from album page bvandeusen 2026-04-24 21:39:34 -04:00
  • 4189ef9899 feat(web): add MediaSession glue for OS media controls bvandeusen 2026-04-24 21:03:01 -04:00
  • 1476d5081b feat(web): add shuffle, repeat, and audio-event reporting to player store bvandeusen 2026-04-24 17:56:00 -04:00
  • 431f333e41 feat(web): add player rune store with basic actions bvandeusen 2026-04-24 17:54:07 -04:00
  • 7c19fe8a6a docs(plan): add web UI player implementation plan bvandeusen 2026-04-24 08:57:52 -04:00
  • d6ea734152 docs(spec): add web UI player design bvandeusen 2026-04-24 08:50:58 -04:00
  • 3ee1295e99 Merge pull request 'feat: web UI library views — artists / artist detail / album detail' (#18) from dev into main bvandeusen 2026-04-24 02:05:23 +00:00
  • 9b67bb7521 fix(web): restore album-page back link; loosen test matchers bvandeusen 2026-04-23 20:52:28 -04:00
  • 9d28c9d9de feat(web): add album detail page at /albums/:id bvandeusen 2026-04-23 20:21:50 -04:00
  • f9b02c4051 docs(plan): Task 13 — match the type-safety fixes applied in Task 12 bvandeusen 2026-04-23 20:13:20 -04:00
  • 2e49335aab feat(web): add artist detail page at /artists/:id bvandeusen 2026-04-23 20:12:57 -04:00
  • 25d44a180c docs(plan): update Tasks 12/13 to unwrap TanStack Query's Readable store bvandeusen 2026-04-23 20:01:46 -04:00
  • 5174b093b9 feat(web): replace / placeholder with real artists list bvandeusen 2026-04-23 19:43:37 -04:00
  • f94bf26f02 feat(web): add ApiErrorBanner retry-capable error card bvandeusen 2026-04-23 18:42:22 -04:00
  • 9ed8e261d4 feat(web): add LibrarySkeleton with list/grid/album variants bvandeusen 2026-04-23 18:41:32 -04:00
  • 12d1cb739b feat(web): add TrackRow component bvandeusen 2026-04-23 18:40:40 -04:00
  • e9b482da0c feat(web): add AlbumCard component bvandeusen 2026-04-23 18:39:42 -04:00
  • a1252c1ef4 feat(web): add ArtistRow component bvandeusen 2026-04-23 18:18:52 -04:00
  • ce6b79ec95 feat(web): add TanStack Query helpers for library endpoints bvandeusen 2026-04-23 18:17:34 -04:00
  • 4cd67405c9 docs(plan): update useDelayed task to match .svelte.test.ts convention bvandeusen 2026-04-23 18:16:37 -04:00
  • 19d74d00d6 refactor(web): drop useDelayed sync-timeout hack; fix test timing instead bvandeusen 2026-04-23 18:16:22 -04:00
  • 6ca877b3ad feat(web): add useDelayed rune helper bvandeusen 2026-04-23 17:23:23 -04:00
  • 828273a78f feat(web): add cover URL helper + fallback SVG data URL bvandeusen 2026-04-23 08:23:59 -04:00
  • 7345625ecd feat(web): add formatDuration helper bvandeusen 2026-04-23 08:23:22 -04:00
  • d15995d19e feat(web): add library API types mirroring internal/api/types.go bvandeusen 2026-04-23 08:22:33 -04:00
  • ea17be9d45 docs(plan): add web UI library views implementation plan bvandeusen 2026-04-23 08:18:08 -04:00
  • 248f03495e docs(spec): add web UI library views design bvandeusen 2026-04-23 08:09:55 -04:00
  • bb3c5d7649 Merge pull request 'feat: web UI auth — login page, session store, Shell, TanStack Query' (#17) from dev into main bvandeusen 2026-04-23 11:22:52 +00:00
  • 048663a4c8 feat(web): wire root layout — bootstrap, guard, Shell, QueryProvider bvandeusen 2026-04-23 06:11:43 -04:00
  • fe410f14eb docs(plan): correct login test filename to avoid route walker collision bvandeusen 2026-04-23 06:10:29 -04:00
  • 88961596b1 fix(web): rename route-colocated test to avoid +page.* collision bvandeusen 2026-04-23 06:10:11 -04:00
  • 78f69b8736 feat(web): add login page with returnTo support and typed error UX bvandeusen 2026-04-23 02:41:44 -04:00
  • d2d5d18e74 feat(web): add Library/Search/Playlists placeholder pages bvandeusen 2026-04-22 22:22:11 -04:00
  • e1504f8e6c feat(web): add Shell component with header, sidebar, and user menu bvandeusen 2026-04-22 22:20:18 -04:00
  • 7a6aa50693 feat(web): auto-logout on 401 inside apiFetch bvandeusen 2026-04-22 17:29:36 -04:00
  • 07b5912fae feat(web): add rune-based auth store with bootstrap/login/logout bvandeusen 2026-04-22 17:28:10 -04:00
  • 12bf873f39 docs(plan): fix invalid toMatchObject<T> type-arg in auth plan bvandeusen 2026-04-22 17:26:37 -04:00
  • 8a6a496c67 fix(web): drop invalid type-arg on toMatchObject in client tests bvandeusen 2026-04-22 17:26:15 -04:00
  • 4591618e7b feat(web): add TanStack Query client singleton bvandeusen 2026-04-22 16:20:31 -04:00
  • 37e5539e5a feat(web): add api.{get,post,del} typed facade over apiFetch bvandeusen 2026-04-22 16:04:25 -04:00
  • 4d1a7f8b93 feat(web): add apiFetch with typed error envelope bvandeusen 2026-04-22 15:56:15 -04:00
  • e31242b57f feat(web): add api client types (User, LoginResponse, ApiError) bvandeusen 2026-04-22 15:55:00 -04:00
  • d0015d3638 build(web): add TanStack Query + Testing Library deps bvandeusen 2026-04-22 15:51:35 -04:00
  • 0b5c4a13bf docs(plan): add web UI auth implementation plan bvandeusen 2026-04-22 15:47:23 -04:00
  • d53e7e2985 docs(spec): add web UI auth design bvandeusen 2026-04-22 15:40:07 -04:00
  • 5e4c45932c Merge pull request 'feat: web UI scaffold with embedded SPA and multi-stage Docker build' (#16) from dev into main bvandeusen 2026-04-22 18:23:01 +00:00
  • 207798b667 docs: document two-process dev workflow with Vite proxy bvandeusen 2026-04-22 12:59:22 -04:00
  • 0ee4dfcf42 ci: install Node + build web before Go steps bvandeusen 2026-04-22 12:59:07 -04:00
  • d9f55df347 build: multi-stage Dockerfile with node->go->slim for embedded SPA bvandeusen 2026-04-22 12:58:29 -04:00
  • 75ce65c80e feat(server): serve embedded SPA at root with /api,/rest carve-out bvandeusen 2026-04-22 10:31:30 -04:00
  • 8fe4a5f578 refactor(web): move embed package to web/ so go:embed reaches build/ bvandeusen 2026-04-22 10:29:31 -04:00
  • d5692a73ca feat(web): embed SvelteKit build output with SPA fallback handler bvandeusen 2026-04-22 10:26:36 -04:00
  • 8d88a76dbf test(web): add Vitest smoke test and jsdom config bvandeusen 2026-04-22 09:30:08 -04:00
  • 86b024dc47 feat(web): scaffold SvelteKit SPA with Tailwind + adapter-static bvandeusen 2026-04-22 09:26:36 -04:00
  • feb3f5bbd8 Merge pull request 'feat: /api/* library reads, search, and media endpoints' (#15) from dev into main bvandeusen 2026-04-22 03:02:28 +00:00
  • 8600b253fd style: gofmt fixes across api package bvandeusen 2026-04-21 23:02:20 -04:00
  • 63d3e234d9 feat(api): register cover + stream routes under RequireUser bvandeusen 2026-04-21 22:48:45 -04:00
  • 3656461b20 feat(api): GET /api/tracks/{id}/stream with Range support bvandeusen 2026-04-21 22:44:48 -04:00
  • 945b773cbd feat(api): GET /api/albums/{id}/cover with sidecar fallback bvandeusen 2026-04-21 22:37:53 -04:00
  • 5af6d7fac6 docs(api): document intentional audioContentType divergence from subsonic bvandeusen 2026-04-21 22:35:29 -04:00
  • c799e5c1c9 feat(api): scaffold media helpers for cover + stream endpoints bvandeusen 2026-04-21 22:30:25 -04:00
  • 8da51a1d13 docs: add Plan 3 web UI media endpoints implementation plan bvandeusen 2026-04-21 22:02:55 -04:00