{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":768440069,"defaultBranch":"main","name":"mpd-now-playable","ownerLogin":"00dani","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-03-07T04:50:00.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/610876?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1720859999.0","currentOid":""},"activityList":{"items":[{"before":"ca5086f93a0cebb9d03e268552dcee7f6efbe653","after":"21b7c286921101d4c6128f09580318bd08038bb4","ref":"refs/heads/main","pushedAt":"2024-07-13T10:29:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Add descriptions to websockets config","shortMessageHtmlLink":"Add descriptions to websockets config"}},{"before":"27d8c37139ddc0f1e03049637737ad441f218574","after":"ca5086f93a0cebb9d03e268552dcee7f6efbe653","ref":"refs/heads/main","pushedAt":"2024-07-13T08:38:28.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Fix path to MPD logo in Cocoa receiver (oops)","shortMessageHtmlLink":"Fix path to MPD logo in Cocoa receiver (oops)"}},{"before":"3b7ddfa718fd0e9200284074bf01b427fb97796c","after":"27d8c37139ddc0f1e03049637737ad441f218574","ref":"refs/heads/main","pushedAt":"2024-06-30T14:33:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Significantly overhaul configuration management\n\nEverything now uses bog-standard Python dataclasses, with Pydantic\nproviding validation and type conversion through separate classes using\nits type adapter feature. It's also possible to define your classes\nusing Pydantic's own model type directly, making the type adapter\nunnecessary, but I didn't want to do things that way because no actual\nvalidation is needed when constructing a Song instance for example.\nHaving Pydantic do its thing only on-demand was preferable.\n\nI tried a number of validation libraries before settling on Pydantic for\nthis. It's not the fastest option out there (msgspec is I think), but it\nmakes adding support for third-party types like yarl.URL really easy, it\ngenerates a nice clean JSON Schema which is easy enough to adjust to my\nrequirements through its GenerateJsonSchema hooks, and raw speed isn't\nall that important anyway since this is a single-user desktop program\nthat reads its configuration file once on startup.\n\nAlso, MessagePack is now mandatory if you're caching to an external\nservice. It just didn't make a whole lot sense to explicitly install\nmpd-now-playable's Redis or Memcached support and then use pickling with\nthem.\n\nWith all this fussing around done, I'm probably finally ready to\nactually use that configuration file to configure new features! Yay!","shortMessageHtmlLink":"Significantly overhaul configuration management"}},{"before":"fcf7254e64863d13822bfa3f72351b34c7695a46","after":"3b7ddfa718fd0e9200284074bf01b427fb97796c","ref":"refs/heads/main","pushedAt":"2024-06-28T04:14:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"fix: handle missing environment variables more robustly","shortMessageHtmlLink":"fix: handle missing environment variables more robustly"}},{"before":"2f70c6f7fa1ff16a8a79f6f977785ba37c296870","after":"fcf7254e64863d13822bfa3f72351b34c7695a46","ref":"refs/heads/main","pushedAt":"2024-06-23T07:32:39.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Remove deprecated Ruff option from pyproject.toml","shortMessageHtmlLink":"Remove deprecated Ruff option from pyproject.toml"}},{"before":"35703de26116bdcf4ffd0f5c34e32be1939e8012","after":"2f70c6f7fa1ff16a8a79f6f977785ba37c296870","ref":"refs/heads/main","pushedAt":"2024-06-22T10:13:01.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Prettier-print the generated config schema","shortMessageHtmlLink":"Prettier-print the generated config schema"}},{"before":"8e982e8a6bc5db251c5ff088742b379a0f91aeee","after":"35703de26116bdcf4ffd0f5c34e32be1939e8012","ref":"refs/heads/main","pushedAt":"2024-06-22T08:42:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Gitignore __version__.py to avoid spurious diffs","shortMessageHtmlLink":"Gitignore __version__.py to avoid spurious diffs"}},{"before":"dc037a0a4b3d15b9e80384b2d843694c7b8aefef","after":"8e982e8a6bc5db251c5ff088742b379a0f91aeee","ref":"refs/heads/main","pushedAt":"2024-06-22T08:39:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Fixups to placate Ruff linter","shortMessageHtmlLink":"Fixups to placate Ruff linter"}},{"before":"fd7866ed14e9c59d69a959202b05906fc0e322ee","after":"dc037a0a4b3d15b9e80384b2d843694c7b8aefef","ref":"refs/heads/main","pushedAt":"2024-06-22T08:29:27.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Support a TOML configuration file\n\nThe new config file currently only configures the same options that were\nalready available through environment variables. However I have ideas\nfor additional features that would be much nicer to support using a\nstructured configuration format like TOML rather than environment\nvariables, so config files exist now!\n\nThe previous environment variables are still supported and will be used\nif you don't have a config file. I plan to keep supporting the MPD_HOST\nand MPD_PORT environment variables forever since they're shared with\nother MPD clients such as mpc, but I may eventually drop the environment\nvariables specific to mpd-now-playable in a future release.","shortMessageHtmlLink":"Support a TOML configuration file"}},{"before":"8ad255856e9bb2b538f68410816a66db51217bc3","after":"fd7866ed14e9c59d69a959202b05906fc0e322ee","ref":"refs/heads/main","pushedAt":"2024-05-17T09:46:35.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Try both readpicture and albumart, prefer the former","shortMessageHtmlLink":"Try both readpicture and albumart, prefer the former"}},{"before":"37166e146de459930575c5f5f625075c96748cb3","after":"8ad255856e9bb2b538f68410816a66db51217bc3","ref":"refs/heads/main","pushedAt":"2024-05-17T00:24:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Extend cache TTL now external caches are supported","shortMessageHtmlLink":"Extend cache TTL now external caches are supported"}},{"before":"8ad255856e9bb2b538f68410816a66db51217bc3","after":"37166e146de459930575c5f5f625075c96748cb3","ref":"refs/heads/main","pushedAt":"2024-05-17T00:19:31.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Try both readpicture and albumart, prefer the former","shortMessageHtmlLink":"Try both readpicture and albumart, prefer the former"}},{"before":"55d82c72c39b169b35c2d8b27a06839fb83db01a","after":null,"ref":"refs/tags/1.1.0","pushedAt":"2024-05-14T08:30:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"}},{"before":"a471b77c55b343ad82378b8547b6a736a203a073","after":null,"ref":"refs/tags/1.1.1","pushedAt":"2024-05-14T08:30:05.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"}},{"before":"8ad255856e9bb2b538f68410816a66db51217bc3","after":null,"ref":"refs/tags/1.1.2","pushedAt":"2024-05-14T08:30:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"}},{"before":"4a2ac29d30d28a1fa4c7e9f48519090d0fa52cc2","after":"8ad255856e9bb2b538f68410816a66db51217bc3","ref":"refs/heads/main","pushedAt":"2024-05-14T06:09:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Extend cache TTL now external caches are supported","shortMessageHtmlLink":"Extend cache TTL now external caches are supported"}},{"before":"a471b77c55b343ad82378b8547b6a736a203a073","after":"4a2ac29d30d28a1fa4c7e9f48519090d0fa52cc2","ref":"refs/heads/main","pushedAt":"2024-05-14T05:09:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Use more conventional Redis key separators for album cache","shortMessageHtmlLink":"Use more conventional Redis key separators for album cache"}},{"before":"55d82c72c39b169b35c2d8b27a06839fb83db01a","after":"a471b77c55b343ad82378b8547b6a736a203a073","ref":"refs/heads/main","pushedAt":"2024-05-14T04:08:13.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Avoid crashing if cache URL has no namespace","shortMessageHtmlLink":"Avoid crashing if cache URL has no namespace"}},{"before":"9fca1d566eb0bea7099e4ddb8ef011344d8bc57d","after":"55d82c72c39b169b35c2d8b27a06839fb83db01a","ref":"refs/heads/main","pushedAt":"2024-05-14T03:29:22.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Support MPD_NOW_PLAYABLE_CACHE setting (Redis or Memcached)","shortMessageHtmlLink":"Support MPD_NOW_PLAYABLE_CACHE setting (Redis or Memcached)"}},{"before":"5afeb32f9a1fb5bac274dcafaf40d4a8ca8043d2","after":"9fca1d566eb0bea7099e4ddb8ef011344d8bc57d","ref":"refs/heads/main","pushedAt":"2024-05-14T00:08:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Support MusicBrainz release track ID\n\nI still don't totally understand when MusicBrainz uses a track ID and\nwhen it uses a release track ID - they're both displayed as the\n\"MusicBrainz Track ID\" tag in Picard, despite being treated as different\ntags by everything else - but supporting both is easy enough.","shortMessageHtmlLink":"Support MusicBrainz release track ID"}},{"before":"1caf4a184cf7092b60171f2fcf74acbeefd47549","after":"5afeb32f9a1fb5bac274dcafaf40d4a8ca8043d2","ref":"refs/heads/main","pushedAt":"2024-05-13T01:19:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Update pdm.lock hashes for PDM 2.15.2","shortMessageHtmlLink":"Update pdm.lock hashes for PDM 2.15.2"}},{"before":"8b5912bed2b80fe175b3c96e23d30ef8d53bcac1","after":"1caf4a184cf7092b60171f2fcf74acbeefd47549","ref":"refs/heads/main","pushedAt":"2024-05-09T02:13:31.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Cache 'no artwork', rather than repeatedly populating the cache with None","shortMessageHtmlLink":"Cache 'no artwork', rather than repeatedly populating the cache with …"}},{"before":"9b8988cf4113bbf4ffc0c959bb12e998338d2943","after":"8b5912bed2b80fe175b3c96e23d30ef8d53bcac1","ref":"refs/heads/main","pushedAt":"2024-03-07T04:53:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Add PyPI package version badge to readme","shortMessageHtmlLink":"Add PyPI package version badge to readme"}},{"before":null,"after":"9b8988cf4113bbf4ffc0c959bb12e998338d2943","ref":"refs/heads/main","pushedAt":"2024-03-07T04:50:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"00dani","name":"Danielle McLean","path":"/00dani","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/610876?s=80&v=4"},"commit":{"message":"Fix path to mpd/logo.svg","shortMessageHtmlLink":"Fix path to mpd/logo.svg"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEfn8t5AA","startCursor":null,"endCursor":null}},"title":"Activity · 00dani/mpd-now-playable"}