{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":15564170,"defaultBranch":"master","name":"euterpe","ownerLogin":"ironsmile","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-01-01T12:51:54.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/50431?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1716136962.0","currentOid":""},"activityList":{"items":[{"before":"1f78d7279553e6f3df19659a8143c9bf10a9a500","after":"bba6558de9b285d8954011d84ff1c5cf5810b695","ref":"refs/heads/master","pushedAt":"2024-05-19T16:51:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Update the Go version mentioned in the README","shortMessageHtmlLink":"Update the Go version mentioned in the README"}},{"before":"1f78d7279553e6f3df19659a8143c9bf10a9a500","after":null,"ref":"refs/heads/subsonic-api","pushedAt":"2024-05-19T16:42:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"}},{"before":"010413d13857b47a433f8178537a6bb4bb5978f5","after":"1f78d7279553e6f3df19659a8143c9bf10a9a500","ref":"refs/heads/master","pushedAt":"2024-05-19T16:42:23.000Z","pushType":"push","commitsCount":54,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Support HEAD requests for artwork endpoints","shortMessageHtmlLink":"Support HEAD requests for artwork endpoints"}},{"before":"6df6236ec6768569e6a0dec9625ecf4645271e8f","after":"1f78d7279553e6f3df19659a8143c9bf10a9a500","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-19T16:39:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Support HEAD requests for artwork endpoints","shortMessageHtmlLink":"Support HEAD requests for artwork endpoints"}},{"before":"bfd38af3f7e6befa9274215b029ade8f9eec2a04","after":"6df6236ec6768569e6a0dec9625ecf4645271e8f","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-19T16:08:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Implement the getAlbumInfo and getAlbumInfo endpoints","shortMessageHtmlLink":"Implement the getAlbumInfo and getAlbumInfo endpoints"}},{"before":"830556e0b1970097edb328cbad300cdc1ca98f71","after":"bfd38af3f7e6befa9274215b029ade8f9eec2a04","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-19T14:49:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Implement browsing album lists by year","shortMessageHtmlLink":"Implement browsing album lists by year"}},{"before":"eed779f5f85c28637eab4f520996ad6591b3724a","after":"830556e0b1970097edb328cbad300cdc1ca98f71","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-19T12:11:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Store track year, bitrate, size and creation date\n\nThis will allow us to write much more data about songs in API responses.\nIt is particuarly helpful for the Subsonic API. There are some subsonic\nclients which do not work when track size is not set, for example.","shortMessageHtmlLink":"Store track year, bitrate, size and creation date"}},{"before":"bcb8e06731e3dcc2659187e953c28ab39c557d6b","after":"eed779f5f85c28637eab4f520996ad6591b3724a","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-19T09:49:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Support early cancel of HTTP requests\n\nIf HTTP clients close their connection then no more work will be done by\nthe server. Previously many handlers were doing needless work in this\nsituation.","shortMessageHtmlLink":"Support early cancel of HTTP requests"}},{"before":"facec20aa185338b6856db2b56ba1463e67fd6a2","after":"bcb8e06731e3dcc2659187e953c28ab39c557d6b","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-19T09:03:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Refactor database code for querying tracks\n\nThe select statements and scanning was duplicated in many places.\nInstead, now it is kept in a single file for easier changes. And such\nchanges are anticipated.","shortMessageHtmlLink":"Refactor database code for querying tracks"}},{"before":"81dee3b425e2151a0d53b7a2a256181685ca2487","after":"facec20aa185338b6856db2b56ba1463e67fd6a2","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-17T19:01:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Reimplement getAlbum without using directory entries","shortMessageHtmlLink":"Reimplement getAlbum without using directory entries"}},{"before":"2e84d5668e86620d59130850f891c82cbdb8c477","after":"81dee3b425e2151a0d53b7a2a256181685ca2487","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-17T18:39:17.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Encode empty year as zero\n\nSome players (Amperfy) fail when the year is not present in the\nresponse.","shortMessageHtmlLink":"Encode empty year as zero"}},{"before":"94a16749868c81f090db61e7c095efc4e13042ae","after":"2e84d5668e86620d59130850f891c82cbdb8c477","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-17T17:09:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Improve the access logging\n\nMore information is now logged:\n\n* Status code\n* Elapsed time\n* User agent\n* Remote address\n\nAdditionally, sensitive data is removed from the logged line. Data such\nas tokens and passwords from the URL query.","shortMessageHtmlLink":"Improve the access logging"}},{"before":"bc2b35f14674443e0b3aaf7b32baff3ccb0a8585","after":"94a16749868c81f090db61e7c095efc4e13042ae","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-15T17:36:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Implement the Subsonic's getTopSongs API endpoint\n\nIt does not use the Last.fm data but what was stored in the Euterpe\ndatabase.","shortMessageHtmlLink":"Implement the Subsonic's getTopSongs API endpoint"}},{"before":"f2d11b094b3a4328fcfa54fcfcdf2930f7f34a79","after":"bc2b35f14674443e0b3aaf7b32baff3ccb0a8585","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-15T16:35:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Serve album and artist artwork by their bare IDs\n\nThe iOS substreamer is slightly broken in a different way. It requires\ncover art for albums by their directory IDs. Instead of their cover art\nIDs which is supposed to do. Anyway, a work-around is in order then!","shortMessageHtmlLink":"Serve album and artist artwork by their bare IDs"}},{"before":"5620f0c1573ef7a07a872d8634def2e0dba05b52","after":"f2d11b094b3a4328fcfa54fcfcdf2930f7f34a79","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-13T20:45:25.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Support browsing by songs","shortMessageHtmlLink":"Support browsing by songs"}},{"before":"4d593ac0297a22fdec8601fa9d2e820d0a5ba062","after":"5620f0c1573ef7a07a872d8634def2e0dba05b52","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-12T15:12:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Clean up artist images as well","shortMessageHtmlLink":"Clean up artist images as well"}},{"before":"133ca056c256033bb71ff18a975e7dde5e32534e","after":"4d593ac0297a22fdec8601fa9d2e820d0a5ba062","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-12T14:29:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Ignore \"not found\" scrobble errors for substreamer","shortMessageHtmlLink":"Ignore \"not found\" scrobble errors for substreamer"}},{"before":"40c2b0a5667cd7f5b9ec06f04e07846156af387b","after":"133ca056c256033bb71ff18a975e7dde5e32534e","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-10T20:20:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Partially implement the getStarred methods","shortMessageHtmlLink":"Partially implement the getStarred methods"}},{"before":"c053c9294b99a22f9dd8024ae98b0adb681c78b3","after":"40c2b0a5667cd7f5b9ec06f04e07846156af387b","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-10T10:25:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Update the Docker build to use go1.21","shortMessageHtmlLink":"Update the Docker build to use go1.21"}},{"before":"04afb4f0fb9603dba2eae3286a9a5074bb640b2e","after":"c053c9294b99a22f9dd8024ae98b0adb681c78b3","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-10T10:06:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Implement adding to favourites lists","shortMessageHtmlLink":"Implement adding to favourites lists"}},{"before":"38010f106c1088eaa0e39e082f13f7b1f2c28e07","after":"04afb4f0fb9603dba2eae3286a9a5074bb640b2e","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-10T06:47:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Update golangci-lint with Go1.21 in mind","shortMessageHtmlLink":"Update golangci-lint with Go1.21 in mind"}},{"before":"482cf63c934a7f3ee9a4e40b9b9ae31eac5cffc8","after":"38010f106c1088eaa0e39e082f13f7b1f2c28e07","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-09T16:01:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Update the Go version to 1.21\n\nWhich includes the generics for slices in the `slices` package.","shortMessageHtmlLink":"Update the Go version to 1.21"}},{"before":"7c47facdd33dbb6ef85728d79addb63e87f58387","after":"482cf63c934a7f3ee9a4e40b9b9ae31eac5cffc8","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-09T15:58:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Fix some typos","shortMessageHtmlLink":"Fix some typos"}},{"before":"df10bbd20a05c5d975911108770e0073df3028aa","after":"7c47facdd33dbb6ef85728d79addb63e87f58387","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-05T21:04:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Support ordering by artist name in Subsonic album lists","shortMessageHtmlLink":"Support ordering by artist name in Subsonic album lists"}},{"before":"a40fd3ab4f124608ed802c1a2da97046300a8795","after":"df10bbd20a05c5d975911108770e0073df3028aa","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-05T20:47:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Fix bug where album duration was not in seconds","shortMessageHtmlLink":"Fix bug where album duration was not in seconds"}},{"before":"9cc0984b486a431f2428511504bf374c27d0d181","after":"a40fd3ab4f124608ed802c1a2da97046300a8795","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-05T20:46:03.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Add support for user ratings","shortMessageHtmlLink":"Add support for user ratings"}},{"before":"4162f4860202ed847985de6e3a79cc3ac23f87c9","after":"9cc0984b486a431f2428511504bf374c27d0d181","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-04T21:40:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Set artistImageUrl to subsonic responses for Artist","shortMessageHtmlLink":"Set artistImageUrl to subsonic responses for Artist"}},{"before":"e636ced99daa20e4d1a7705cd90da751b2f97e81","after":"4162f4860202ed847985de6e3a79cc3ac23f87c9","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-04T21:04:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Add the getAlbumList Subsonic endpoint","shortMessageHtmlLink":"Add the getAlbumList Subsonic endpoint"}},{"before":"c379bafb443c99d3ee6541d4e93caedd91a9881b","after":"e636ced99daa20e4d1a7705cd90da751b2f97e81","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-04T20:47:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Add the getArtistInfo Subsonic API endpoint","shortMessageHtmlLink":"Add the getArtistInfo Subsonic API endpoint"}},{"before":"62234838f3adbee49f016683693ac209b679c971","after":"c379bafb443c99d3ee6541d4e93caedd91a9881b","ref":"refs/heads/subsonic-api","pushedAt":"2024-05-04T19:19:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ironsmile","name":"Doychin Atanasov","path":"/ironsmile","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50431?s=80&v=4"},"commit":{"message":"Add statistics for tracks and albums\n\nThese include time of last playing and play counter for tracks and\nalbums. For this to happen statistics are updated on every stream via\nthe Euterpe API and through the new \"scrobble\" Subsonic endpoint. Note\nthat in both cases Euterpe tries to prevent updating the statistics way\ntoo fast by buggy clients.","shortMessageHtmlLink":"Add statistics for tracks and albums"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAETikMYQA","startCursor":null,"endCursor":null}},"title":"Activity ยท ironsmile/euterpe"}