| 2026-06-24 04:14 | refactor: fmt.Errorf -> errors.New when not using formatter | brookjeynes | 4 | +29 | -29 |
| 2026-06-22 03:26 | feat: add search page | brookjeynes | 43 | +1097 | -259 |
| 2026-06-21 22:06 | feat: order songs via input type number | brookjeynes | 7 | +85 | -32 |
| 2026-06-19 05:33 | fix: edit release does not fetch similar releases | brookjeynes | 9 | +23 | -9 |
| 2026-06-19 05:33 | feat: add ability to edit artist | brookjeynes | 7 | +290 | -0 |
| 2026-06-18 22:49 | ui: style add artist page | brookjeynes | 10 | +107 | -55 |
| 2026-06-17 20:18 | feat: add create as single button | brookjeynes | 13 | +169 | -89 |
| 2026-06-16 22:57 | refactor: add release_type | brookjeynes | 14 | +119 | -22 |
| 2026-06-15 23:14 | refactor: rename album to release | brookjeynes | 67 | +1770 | -1769 |
| 2026-06-14 21:02 | ui: design new song page | brookjeynes | 17 | +423 | -261 |
| 2026-06-14 21:02 | docs: add tasks | brookjeynes | 4 | +12 | -0 |
| 2026-06-14 10:32 | fix: nav list items not in a list | brookjeynes | 2 | +14 | -8 |
| 2026-06-14 07:48 | feat(albums): load cover art from MusicBrainz | brookjeynes | 8 | +270 | -4 |
| 2026-06-14 07:48 | feat(albums): save MusicBrainz release IDs | brookjeynes | 4 | +70 | -18 |
| 2026-06-14 07:48 | feat: add MusicBrainz IDs | brookjeynes | 9 | +95 | -60 |
| 2026-06-13 03:58 | feat(albums): add album editing | brookjeynes | 14 | +589 | -22 |
| 2026-06-13 03:58 | ui: (new) album page ui refresh | brookjeynes | 13 | +286 | -160 |
| 2026-06-13 02:59 | feat: add recently added songs on homepage | brookjeynes | 4 | +252 | -118 |
| 2026-06-13 01:56 | ui: style artist page | brookjeynes | 6 | +50 | -49 |
| 2026-06-13 01:53 | ui: style song page | brookjeynes | 6 | +122 | -66 |
| 2026-06-13 01:53 | feat: add header and footer | brookjeynes | 2 | +41 | -0 |
| 2026-06-07 08:27 | refactor: follow go style guides for "Get" functions | brookjeynes | 6 | +10 | -10 |
| 2026-06-07 08:22 | refactor: use request context for form transactions | brookjeynes | 3 | +3 | -3 |
| 2026-06-07 08:18 | fix: clarify missing asset dependencies | brookjeynes | 1 | +6 | -0 |
| 2026-06-07 08:17 | fix: return server errors for db failures | brookjeynes | 3 | +9 | -9 |
| 2026-06-07 08:08 | refactor: rename album latin name to latin title | brookjeynes | 12 | +27 | -27 |
| 2026-06-07 07:53 | refactor: use canonical entity paths | brookjeynes | 7 | +63 | -15 |
| 2026-06-07 07:53 | refactor: rename Record* structs to New* structs | brookjeynes | 6 | +23 | -27 |
| 2026-06-07 07:46 | fix: return search endpoint errors | brookjeynes | 2 | +2 | -0 |
| 2026-06-07 07:45 | fix: stop startup after config load failure | brookjeynes | 1 | +1 | -0 |
| 2026-06-07 07:45 | fix: handle optional artist fields correctly | brookjeynes | 1 | +10 | -2 |
| 2026-06-07 07:40 | refactor: simplify toast component | brookjeynes | 5 | +67 | -86 |
| 2026-06-07 07:26 | refactor: clean up server startup and error handling | brookjeynes | 13 | +128 | -14 |
| 2026-06-07 06:50 | refactor: normalize database row handling | brookjeynes | 3 | +254 | -206 |
| 2026-06-07 06:50 | refactor: move static assets into build step | brookjeynes | 11 | +74 | -33 |
| 2026-06-07 06:05 | build: add makefile | brookjeynes | 4 | +39 | -21 |
| 2026-05-12 08:12 | feat: create album page | brookjeynes | 4 | +106 | -0 |
| 2026-05-12 08:12 | feat: create artist page | brookjeynes | 8 | +441 | -9 |
| 2026-05-12 08:12 | chore: add minimal stylesheet | brookjeynes | 2 | +219 | -0 |
| 2026-05-12 08:12 | fix: clean up song form and artist roles | brookjeynes | 4 | +8 | -4 |
| 2026-05-12 08:12 | refactor: move Slug to domain package | brookjeynes | 2 | +35 | -31 |
| 2026-05-07 23:36 | feat(ui): create song page | brookjeynes | 12 | +376 | -20 |
| 2026-05-07 22:46 | feat: add album search to new song page | brookjeynes | 13 | +128 | -31 |
| 2026-05-07 20:38 | feat(ui): add new album page | brookjeynes | 14 | +415 | -13 |
| 2026-05-07 20:20 | refactor: use dedicated types for ids | brookjeynes | 4 | +27 | -21 |
| 2026-05-06 03:03 | refactor: improvements with new-[song|artist] pages | brookjeynes | 13 | +115 | -74 |
| 2026-05-04 06:37 | feat: save song to db | brookjeynes | 9 | +168 | -36 |
| 2026-05-04 06:31 | feat: add artist search to new song page | brookjeynes | 7 | +132 | -68 |
| 2026-05-03 11:38 | feat: add disambiguation field for artists | brookjeynes | 10 | +88 | -25 |
| 2026-05-03 07:35 | feat: add latin_name field | brookjeynes | 9 | +104 | -44 |
| 2026-05-03 07:20 | refactor: make bio nullable | brookjeynes | 3 | +4 | -4 |
| 2026-05-03 06:36 | feat: artist lookup in new artist page | brookjeynes | 5 | +39 | -6 |
| 2026-05-03 04:46 | feat: artist lookup in new song page | brookjeynes | 6 | +84 | -2 |
| 2026-05-03 04:32 | feat(db): save artist to db | brookjeynes | 2 | +48 | -1 |
| 2026-05-03 04:21 | feat(ui): add create artist page | brookjeynes | 5 | +117 | -3 |
| 2026-05-02 03:17 | feat(db): add db | brookjeynes | 11 | +232 | -28 |
| 2026-04-28 11:13 | feat(ui/views): add new song page | brookjeynes | 16 | +378 | -131 |
| 2026-04-28 11:13 | feat: add toast | brookjeynes | 7 | +186 | -0 |
| 2026-04-28 11:13 | feat: update dev scripts | brookjeynes | 1 | +5 | -0 |
| 2026-04-28 11:13 | feat(domain): setup song / artist models | brookjeynes | 3 | +32 | -0 |
| 2026-04-28 11:08 | feat: initial project setup | brookjeynes | 16 | +497 | -0 |