Commit Graph

  • 20c948a346 docs: clarify sidecar ordering and test helper extension in Plan 3 spec bvandeusen 2026-04-21 21:52:07 -04:00
  • 7fcee05c1e docs: add Plan 3 web UI media endpoints spec bvandeusen 2026-04-21 21:51:29 -04:00
  • b94b7514f9 fix(api): clamp negative offset instead of erroring + clarify duration_sec=0 bvandeusen 2026-04-21 19:27:21 -04:00
  • db2ee3b21f feat(api): register library + search routes under RequireUser bvandeusen 2026-04-21 08:34:12 -04:00
  • 683c11661b feat(api): GET /api/search with three paged facets bvandeusen 2026-04-21 08:29:28 -04:00
  • 8fb2f4e184 feat(api): GET /api/artists with alpha/newest sort and paging bvandeusen 2026-04-21 08:06:03 -04:00
  • f37fd782af feat(api): GET /api/artists/{id} with nested albums bvandeusen 2026-04-21 08:01:25 -04:00
  • c0487ecddb feat(api): GET /api/albums/{id} with nested tracks bvandeusen 2026-04-21 07:43:39 -04:00
  • 8c18e44d5b feat(api): GET /api/tracks/{id} handler with parent metadata bvandeusen 2026-04-21 07:12:11 -04:00
  • 98b4755b49 test(api): add library seed fixtures bvandeusen 2026-04-21 00:16:24 -04:00
  • 3855166a09 feat(api): add dbq→ref projection helpers bvandeusen 2026-04-21 00:13:06 -04:00
  • e43b6f2761 feat(api): add conversion helpers for library DTOs bvandeusen 2026-04-21 00:09:30 -04:00
  • c5af7bb53a feat(api): add DTOs for library reads and search bvandeusen 2026-04-21 00:04:51 -04:00
  • fb49a39492 feat(db): add paged + count queries for library reads bvandeusen 2026-04-21 00:01:15 -04:00
  • 62e48642e2 docs(plan): add implementation plan for library reads + search bvandeusen 2026-04-20 23:42:47 -04:00
  • 14aa9d7fba docs(spec): add design for library reads + search endpoints bvandeusen 2026-04-20 23:33:51 -04:00
  • 728c852ba1 Merge pull request 'feat: web UI server auth foundation (/api/* login, logout, me)' (#14) from dev into main bvandeusen 2026-04-21 02:51:45 +00:00
  • 2324c5d576 fix(auth): silence unused-parameter lint in RequireUser test bvandeusen 2026-04-20 22:43:22 -04:00
  • 1e5c8b5ab7 fix(api): trim whitespace from bearer token in logout bvandeusen 2026-04-20 22:32:12 -04:00
  • 06a1fe16e0 feat(server): mount /api/* (login, logout, me) bvandeusen 2026-04-20 22:19:59 -04:00
  • 2adf41604f feat(api): GET /api/me bvandeusen 2026-04-20 22:11:02 -04:00
  • 8537821d29 feat(api): POST /api/auth/logout bvandeusen 2026-04-20 22:07:16 -04:00
  • 2f2dfa86df feat(api): POST /api/auth/login bvandeusen 2026-04-20 21:25:52 -04:00
  • dc43921bcc feat(api): package skeleton + error envelope bvandeusen 2026-04-20 20:57:09 -04:00
  • 8cdaf8f0f1 feat(auth): RequireUser middleware (cookie or bearer) bvandeusen 2026-04-20 20:53:11 -04:00
  • ff4d443269 feat(auth): session token + password verification helpers bvandeusen 2026-04-20 20:24:09 -04:00
  • c8a4a930ea feat(dbq): generate session queries bvandeusen 2026-04-20 20:15:45 -04:00
  • 1741b57a0b feat(db): add sessions table for /api/* auth bvandeusen 2026-04-20 19:37:26 -04:00
  • 9b0433ad9b docs: add web UI server auth foundation plan bvandeusen 2026-04-20 19:30:24 -04:00
  • cb3df51f08 docs: add web UI scaffold design spec bvandeusen 2026-04-20 19:18:04 -04:00
  • cd535b9de6 Merge pull request 'feat(library): extract track duration via ffprobe' (#13) from dev into main bvandeusen 2026-04-20 12:11:09 +00:00
  • 4a9193bc52 feat(library): extract track duration via ffprobe bvandeusen 2026-04-20 08:02:37 -04:00
  • be92087ba1 Merge pull request 'fix(library): drop out-of-range release years instead of failing the album' (#12) from dev into main bvandeusen 2026-04-20 04:22:18 +00:00
  • dcd19c0143 fix(library): drop out-of-range years instead of failing the album bvandeusen 2026-04-20 00:14:51 -04:00
  • 22bf7a70f2 Merge pull request 'feat(subsonic): getUser + envelope-shaped 404 for /rest/*' (#11) from dev into main bvandeusen 2026-04-20 03:13:39 +00:00
  • dfcdf4d3ca feat(subsonic): getUser + envelope-shaped 404 for /rest/* bvandeusen 2026-04-19 21:56:31 -04:00
  • 5318f9b8dc Merge pull request 'fix(auth): subsonic_password on bootstrap + dev compose defaults' (#10) from dev into main bvandeusen 2026-04-19 23:07:13 +00:00
  • 64582b21e3 fix(auth): set subsonic_password on admin bootstrap bvandeusen 2026-04-19 18:30:54 -04:00
  • e6b84190e7 chore(compose): bake in dev mount + scan defaults bvandeusen 2026-04-19 18:12:13 -04:00
  • f49d672b5f Merge pull request 'feat(subsonic): stream/download/getCoverArt/scrobble (#296)' (#9) from dev into main bvandeusen 2026-04-19 19:33:10 +00:00
  • 3c95740ebe feat(subsonic): emit coverArt id unconditionally (#296) bvandeusen 2026-04-19 19:28:30 +00:00
  • 547adb74ac feat(subsonic): register media handlers (#296) bvandeusen 2026-04-19 19:27:15 +00:00
  • eb776bdaa2 test(subsonic): cover stream helpers (#296) bvandeusen 2026-04-19 19:26:59 +00:00
  • 0760b48037 feat(subsonic): add stream/download/getCoverArt/scrobble (#296) bvandeusen 2026-04-19 19:26:39 +00:00
  • 6637bbfdaf Merge pull request 'feat(subsonic): browse endpoints — getArtists/getAlbum/search3/… (#295)' (#8) from dev into main bvandeusen 2026-04-19 19:13:12 +00:00
  • 9997781ab8 test(subsonic): cover browse type helpers (#295) bvandeusen 2026-04-19 19:08:38 +00:00
  • d982bcb2ff test(subsonic): pin getMusicFolders wire shape (#295) bvandeusen 2026-04-19 19:08:18 +00:00
  • ca92cec159 feat(subsonic): register browse endpoints (#295) bvandeusen 2026-04-19 19:08:08 +00:00
  • 252428a104 feat(subsonic): add browse handlers (#295) bvandeusen 2026-04-19 19:07:50 +00:00
  • 71e8849dca subsonic: browse response shapes and conversion helpers (#295) bvandeusen 2026-04-19 19:05:03 +00:00
  • f8249a12ac sqlc generate for CountTracksByAlbum and SearchTracks (#295) bvandeusen 2026-04-19 19:03:59 +00:00
  • f3a80347c1 sqlc generate for SearchArtists (#295) bvandeusen 2026-04-19 19:03:30 +00:00
  • 319ef06a4f sqlc generate for album browse queries (#295) bvandeusen 2026-04-19 19:03:10 +00:00
  • acd2c7f034 sqlc: add CountTracksByAlbum and SearchTracks for Subsonic browse (#295) bvandeusen 2026-04-19 19:02:27 +00:00
  • 97eb91f50b sqlc: add SearchArtists for Subsonic search3 (#295) bvandeusen 2026-04-19 19:02:14 +00:00
  • a498d20021 sqlc: add album listing/search queries for Subsonic browse (#295) bvandeusen 2026-04-19 19:02:03 +00:00
  • b6f7c894fb Merge pull request 'feat(subsonic): auth + envelope + ping.view + getLicense.view (Fable #294)' (#7) from dev into main bvandeusen 2026-04-19 18:10:12 +00:00
  • 98818fe28c fix(subsonic): check fmt.Fprintf return (errcheck lint) bvandeusen 2026-04-19 18:07:36 +00:00
  • 02e867ce94 docs: refresh config.example.yaml with auth/library/subsonic sections bvandeusen 2026-04-19 17:40:36 +00:00
  • 9f325cf309 feat(cmd): plumb SubsonicConfig into server.New bvandeusen 2026-04-19 17:40:24 +00:00
  • 644af30a86 test(server): update New() call for new Subsonic arg bvandeusen 2026-04-19 17:40:10 +00:00
  • 5288e9d5df feat(server): wire subsonic.Mount under /rest bvandeusen 2026-04-19 17:40:05 +00:00
  • f8b0d78544 test(config): subsonic env override bvandeusen 2026-04-19 17:39:48 +00:00
  • e649ad2f66 feat(config): subsonic.allow_plaintext_password bvandeusen 2026-04-19 17:39:30 +00:00
  • 841a3d8165 test(subsonic): decodePassword + md5(password+salt) derivation bvandeusen 2026-04-19 17:39:12 +00:00
  • 1885d197d6 test(subsonic): envelope JSON/XML/JSONP + WriteFail bvandeusen 2026-04-19 17:39:03 +00:00
  • da2bb672f0 feat(subsonic): mount /rest router with /ping and /getLicense bvandeusen 2026-04-19 17:38:44 +00:00
  • 2a75fc6687 feat(subsonic): ping.view + getLicense.view handlers bvandeusen 2026-04-19 17:38:34 +00:00
  • cdf56801cd feat(subsonic): auth middleware (apiKey / t+s / p gated) bvandeusen 2026-04-19 17:38:28 +00:00
  • fd408d78af feat(subsonic): response envelope with JSON/XML/JSONP emit bvandeusen 2026-04-19 17:38:07 +00:00
  • 4a447e081d feat(subsonic): error code constants bvandeusen 2026-04-19 17:37:49 +00:00
  • f916cde8c8 chore(sqlc): regenerate models.go for subsonic_password bvandeusen 2026-04-19 17:37:40 +00:00
  • 2d153e1e9a chore(sqlc): regenerate users.sql.go for subsonic_password bvandeusen 2026-04-19 17:37:32 +00:00
  • bc22ec9a91 feat(db): add SetSubsonicPassword query bvandeusen 2026-04-19 17:37:18 +00:00
  • b5bf0cc9d6 feat(db): migration 0003 down — drop users.subsonic_password bvandeusen 2026-04-19 17:37:12 +00:00
  • 9fd3fec149 feat(db): migration 0003 - users.subsonic_password opt-in column bvandeusen 2026-04-19 17:37:11 +00:00
  • 0805320ec3 Merge pull request 'M1/#293: library scanner (walk + tag-parse + upsert incremental) + admin scan endpoint' (#6) from dev into main bvandeusen 2026-04-19 15:21:10 +00:00
  • 6e776810b2 M1/#293: RequireAdmin middleware + UserFromContext bvandeusen 2026-04-19 15:17:16 +00:00
  • c58061778c M1/#293: integration test for scanner walk + incremental bvandeusen 2026-04-19 15:17:09 +00:00
  • fdf28efef0 M1/#293: library scanner (walk + tag-parse + upsert + mtime incremental) bvandeusen 2026-04-19 15:16:48 +00:00
  • 968087198d M1/#293: update server_test for new New() signature bvandeusen 2026-04-19 15:16:22 +00:00
  • 8e91235b88 M1/#293: add /api/admin/scan route gated on X-API-Token bvandeusen 2026-04-19 15:16:15 +00:00
  • bea0604846 M1/#293: wire scanner into startup + server bvandeusen 2026-04-19 15:16:03 +00:00
  • e3257a705a M1/#293: regenerate sqlc output for GetAlbumByArtistAndTitle bvandeusen 2026-04-19 15:15:50 +00:00
  • 918506168a M1/#293: add GetAlbumByArtistAndTitle for no-mbid dedupe bvandeusen 2026-04-19 15:15:35 +00:00
  • 29d32e3097 M1/#293: cover LibraryConfig env + yaml bvandeusen 2026-04-19 15:15:29 +00:00
  • 7cc7e17abc M1/#293: add LibraryConfig + env overrides bvandeusen 2026-04-19 15:15:12 +00:00
  • 0e727b85b0 M1/#293: go.sum for dhowden/tag bvandeusen 2026-04-19 15:14:56 +00:00
  • c5d83364cd M1/#293: add dhowden/tag dep for library scanner bvandeusen 2026-04-19 15:11:40 +00:00
  • 8e1f8c4ae7 Merge pull request 'M1/#292: core library schema + sqlc + admin bootstrap' (#5) from dev into main bvandeusen 2026-04-19 02:36:25 +00:00
  • 442668874d M1/#292: integration test for admin bootstrap (MINSTREL_TEST_DATABASE_URL-gated) bvandeusen 2026-04-19 02:32:58 +00:00
  • 33f6514696 M1/#292: auth.Bootstrap for empty-users-table first-run admin bvandeusen 2026-04-19 02:32:43 +00:00
  • 9e59a0cf73 M1/#292: sqlc-generated users queries bvandeusen 2026-04-19 02:32:31 +00:00
  • 451971a9bd M1/#292: sqlc-generated tracks queries bvandeusen 2026-04-19 02:32:24 +00:00
  • da23c62262 M1/#292: sqlc-generated albums queries bvandeusen 2026-04-19 02:32:08 +00:00
  • 0377c58513 M1/#292: sqlc-generated artists queries bvandeusen 2026-04-19 02:31:58 +00:00
  • 2c10d4e23a M1/#292: sqlc-generated models (Album/Artist/Track/User) bvandeusen 2026-04-19 02:31:49 +00:00
  • e0baeb2980 M1/#292: sqlc-generated DBTX + Queries bvandeusen 2026-04-19 02:31:43 +00:00
  • 34ae7d6cde M1/#292: user queries (create + lookup by username/token + count) bvandeusen 2026-04-19 02:31:39 +00:00
  • 85673f9881 M1/#292: track queries (upsert-by-file_path/get-by-id/get-by-path/list-by-album) bvandeusen 2026-04-19 02:31:36 +00:00