[{"id":"8422575402","type":"ForkEvent","actor":{"id":21251997,"login":"lw000","display_login":"lw000","gravatar_id":"","url":"https://api.github.com/users/lw000","avatar_url":"https://avatars.githubusercontent.com/u/21251997?"},"repo":{"id":8636694,"name":"Amanieu/asyncplusplus","url":"https://api.github.com/repos/Amanieu/asyncplusplus"},"payload":{"action":"forked","forkee":{"id":1210987529,"node_id":"R_kgDOSC40CQ","name":"asyncplusplus","full_name":"lw000/asyncplusplus","private":false,"owner":{"login":"lw000","id":21251997,"node_id":"MDQ6VXNlcjIxMjUxOTk3","avatar_url":"https://avatars.githubusercontent.com/u/21251997?v=4","gravatar_id":"","url":"https://api.github.com/users/lw000","html_url":"https://github.com/lw000","followers_url":"https://api.github.com/users/lw000/followers","following_url":"https://api.github.com/users/lw000/following{/other_user}","gists_url":"https://api.github.com/users/lw000/gists{/gist_id}","starred_url":"https://api.github.com/users/lw000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lw000/subscriptions","organizations_url":"https://api.github.com/users/lw000/orgs","repos_url":"https://api.github.com/users/lw000/repos","events_url":"https://api.github.com/users/lw000/events{/privacy}","received_events_url":"https://api.github.com/users/lw000/received_events","type":"User","user_view_type":"public","site_admin":false},"html_url":"https://github.com/lw000/asyncplusplus","description":"Async++ concurrency framework for C++11","fork":true,"url":"https://api.github.com/repos/lw000/asyncplusplus","forks_url":"https://api.github.com/repos/lw000/asyncplusplus/forks","keys_url":"https://api.github.com/repos/lw000/asyncplusplus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lw000/asyncplusplus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lw000/asyncplusplus/teams","hooks_url":"https://api.github.com/repos/lw000/asyncplusplus/hooks","issue_events_url":"https://api.github.com/repos/lw000/asyncplusplus/issues/events{/number}","events_url":"https://api.github.com/repos/lw000/asyncplusplus/events","assignees_url":"https://api.github.com/repos/lw000/asyncplusplus/assignees{/user}","branches_url":"https://api.github.com/repos/lw000/asyncplusplus/branches{/branch}","tags_url":"https://api.github.com/repos/lw000/asyncplusplus/tags","blobs_url":"https://api.github.com/repos/lw000/asyncplusplus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lw000/asyncplusplus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lw000/asyncplusplus/git/refs{/sha}","trees_url":"https://api.github.com/repos/lw000/asyncplusplus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lw000/asyncplusplus/statuses/{sha}","languages_url":"https://api.github.com/repos/lw000/asyncplusplus/languages","stargazers_url":"https://api.github.com/repos/lw000/asyncplusplus/stargazers","contributors_url":"https://api.github.com/repos/lw000/asyncplusplus/contributors","subscribers_url":"https://api.github.com/repos/lw000/asyncplusplus/subscribers","subscription_url":"https://api.github.com/repos/lw000/asyncplusplus/subscription","commits_url":"https://api.github.com/repos/lw000/asyncplusplus/commits{/sha}","git_commits_url":"https://api.github.com/repos/lw000/asyncplusplus/git/commits{/sha}","comments_url":"https://api.github.com/repos/lw000/asyncplusplus/comments{/number}","issue_comment_url":"https://api.github.com/repos/lw000/asyncplusplus/issues/comments{/number}","contents_url":"https://api.github.com/repos/lw000/asyncplusplus/contents/{+path}","compare_url":"https://api.github.com/repos/lw000/asyncplusplus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lw000/asyncplusplus/merges","archive_url":"https://api.github.com/repos/lw000/asyncplusplus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lw000/asyncplusplus/downloads","issues_url":"https://api.github.com/repos/lw000/asyncplusplus/issues{/number}","pulls_url":"https://api.github.com/repos/lw000/asyncplusplus/pulls{/number}","milestones_url":"https://api.github.com/repos/lw000/asyncplusplus/milestones{/number}","notifications_url":"https://api.github.com/repos/lw000/asyncplusplus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lw000/asyncplusplus/labels{/name}","releases_url":"https://api.github.com/repos/lw000/asyncplusplus/releases{/id}","deployments_url":"https://api.github.com/repos/lw000/asyncplusplus/deployments","created_at":"2026-04-15T00:49:14Z","updated_at":"2026-04-15T00:49:14Z","pushed_at":"2024-10-11T12:13:08Z","git_url":"git://github.com/lw000/asyncplusplus.git","ssh_url":"git@github.com:lw000/asyncplusplus.git","clone_url":"https://github.com/lw000/asyncplusplus.git","svn_url":"https://github.com/lw000/asyncplusplus","homepage":null,"size":322,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"has_discussions":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"has_pull_requests":true,"pull_request_creation_policy":"all","topics":[],"visibility":"public","forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"public":true,"created_at":"2026-04-15T00:49:14Z"},{"id":"8422574524","type":"WatchEvent","actor":{"id":21251997,"login":"lw000","display_login":"lw000","gravatar_id":"","url":"https://api.github.com/users/lw000","avatar_url":"https://avatars.githubusercontent.com/u/21251997?"},"repo":{"id":8636694,"name":"Amanieu/asyncplusplus","url":"https://api.github.com/repos/Amanieu/asyncplusplus"},"payload":{"action":"started"},"public":true,"created_at":"2026-04-15T00:49:10Z"},{"id":"8377236509","type":"PullRequestReviewEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"review":{"id":4102343286,"node_id":"PRR_kwDODgezOs70hMp2","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"Performed full review of **9276193...05a36af**\n### Analysis\n• Pillow dependency is unused by this audio controller integration - it's a transitive dev dependency pulled in through `pytest-homeassistant-custom-component`, creating unnecessary dependency bloat in the dev environment despite being limited to non-runtime code.\n\n• Lock file regeneration modified 3,641 lines with extensive package version changes beyond Pillow itself - verify the test suite runs cleanly to ensure unintended breaking changes weren't introduced in the test dependency tree.\n\n• Heavy-weight testing dependency (`pytest-homeassistant-custom-component`) drags in entire Home Assistant core dependency tree for image processing functionality unused by this integration - consider evaluating lighter alternatives to reduce supply chain attack surface and maintenance burden.\n\n\n> [!TIP]\n> <details>\n> <summary>Help</summary>\n>\n> \n> **Slash Commands:**\n> - `/review` - Request a full code review\n> - `/review latest` - Review only changes since the last review\n> - `/describe` - Generate PR description. This will update the PR body or issue comment depending on your configuration\n> - `/help` - Get help with Mesa commands and configuration options\n> \n> </details>\n\n<sup>0 files reviewed | 0 comments | [Edit Agent Settings](https://wrangler.app.mesa.dev/rsnodgrass/agents) • [Read Docs](https://docs.mesa.dev/) <!--v:3.0 env:production--></sup>","commit_id":"05a36af4063dd61c8dbcf289279e635e1b4bb181","state":"commented","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/22#pullrequestreview-4102343286","pull_request_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","_links":{"html":{"href":"https://github.com/rsnodgrass/hass-xantech/pull/22#pullrequestreview-4102343286"},"pull_request":{"href":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22"}},"submitted_at":"2026-04-13T22:33:09Z","updated_at":"2026-04-13T22:33:10Z"},"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","id":3525491741,"number":22,"head":{"ref":"dependabot/uv/pillow-12.2.0","sha":"05a36af4063dd61c8dbcf289279e635e1b4bb181","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"action":"created"},"public":true,"created_at":"2026-04-13T22:33:10Z"},{"id":"8377236504","type":"PullRequestReviewEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"review":{"id":4102343286,"node_id":"PRR_kwDODgezOs70hMp2","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"Performed full review of **9276193...05a36af**\n### Analysis\n• Pillow dependency is unused by this audio controller integration - it's a transitive dev dependency pulled in through `pytest-homeassistant-custom-component`, creating unnecessary dependency bloat in the dev environment despite being limited to non-runtime code.\n\n• Lock file regeneration modified 3,641 lines with extensive package version changes beyond Pillow itself - verify the test suite runs cleanly to ensure unintended breaking changes weren't introduced in the test dependency tree.\n\n• Heavy-weight testing dependency (`pytest-homeassistant-custom-component`) drags in entire Home Assistant core dependency tree for image processing functionality unused by this integration - consider evaluating lighter alternatives to reduce supply chain attack surface and maintenance burden.\n\n\n> [!TIP]\n> <details>\n> <summary>Help</summary>\n>\n> \n> **Slash Commands:**\n> - `/review` - Request a full code review\n> - `/review latest` - Review only changes since the last review\n> - `/describe` - Generate PR description. This will update the PR body or issue comment depending on your configuration\n> - `/help` - Get help with Mesa commands and configuration options\n> \n> </details>\n\n<sup>0 files reviewed | 0 comments | [Edit Agent Settings](https://wrangler.app.mesa.dev/rsnodgrass/agents) • [Read Docs](https://docs.mesa.dev/) <!--v:3.0 env:production--></sup>","commit_id":"05a36af4063dd61c8dbcf289279e635e1b4bb181","state":"commented","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/22#pullrequestreview-4102343286","pull_request_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","_links":{"html":{"href":"https://github.com/rsnodgrass/hass-xantech/pull/22#pullrequestreview-4102343286"},"pull_request":{"href":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22"}},"submitted_at":"2026-04-13T22:33:09Z","updated_at":"2026-04-13T22:33:10Z"},"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","id":3525491741,"number":22,"head":{"ref":"dependabot/uv/pillow-12.2.0","sha":"05a36af4063dd61c8dbcf289279e635e1b4bb181","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"action":"updated"},"public":true,"created_at":"2026-04-13T22:33:10Z"},{"id":"8377138417","type":"IssueCommentEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/22","repository_url":"https://api.github.com/repos/rsnodgrass/hass-xantech","labels_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/22/labels{/name}","comments_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/22/comments","events_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/22/events","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/22","id":4258257286,"node_id":"PR_kwDODgezOs7SIrwd","number":22,"title":"Bump pillow from 11.1.0 to 12.2.0","user":{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-04-13T22:28:37Z","updated_at":"2026-04-13T22:33:10Z","closed_at":null,"assignee":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/22","diff_url":"https://github.com/rsnodgrass/hass-xantech/pull/22.diff","patch_url":"https://github.com/rsnodgrass/hass-xantech/pull/22.patch","merged_at":null},"body":"Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.1.0 to 12.2.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/python-pillow/Pillow/releases\">pillow's releases</a>.</em></p>\n<blockquote>\n<h2>12.2.0</h2>\n<p><a href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.2.0.html\">https://pillow.readthedocs.io/en/stable/releasenotes/12.2.0.html</a></p>\n<h2>Documentation</h2>\n<ul>\n<li>Update 12.2.0 release notes <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9522\">#9522</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n<li>Add loader plugins: AMOS abk, Atari Degas, 40+ more obscure formats via Netpbm <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9482\">#9482</a> [<a href=\"https://github.com/bitplane\"><code>@​bitplane</code></a>]</li>\n<li>Update Python versions <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9515\">#9515</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Jeffrey A. Clark -&gt; Jeffrey 'Alex' Clark <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9513\">#9513</a> [<a href=\"https://github.com/aclark4life\"><code>@​aclark4life</code></a>]</li>\n<li>Add release notes for <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9394\">#9394</a>, <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9419\">#9419</a> and <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9456\">#9456</a> <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9467\">#9467</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Add Amiga Workbench .info loader to 3rd party plugins list <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9459\">#9459</a> [<a href=\"https://github.com/bitplane\"><code>@​bitplane</code></a>]</li>\n<li>Merge PFM documentation into PPM <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9434\">#9434</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update macOS tested Pillow versions <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9431\">#9431</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Fix CVE number <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9430\">#9430</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n</ul>\n<h2>Dependencies</h2>\n<ul>\n<li>Update xz to 5.8.3 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9523\">#9523</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update libjpeg-turbo to 3.1.4.1 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9507\">#9507</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update libpng to 1.6.56 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9499\">#9499</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update freetype to 2.14.3 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9485\">#9485</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Updated libavif to 1.4.1 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9479\">#9479</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Updated harfbuzz to 13.2.1 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9461\">#9461</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update Ghostscript to 10.7.0 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9469\">#9469</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update harfbuzz to 13.0.1 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9453\">#9453</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update libavif to 1.4.0 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9460\">#9460</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update freetype to 2.14.2 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9449\">#9449</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update actions/download-artifact action to v8 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9451\">#9451</a> [@<a href=\"https://github.com/apps/renovate\">renovate[bot]</a>]</li>\n<li>Updated libpng to 1.6.55 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9425\">#9425</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n</ul>\n<h2>Testing</h2>\n<ul>\n<li>Cleanup .spider extension in the same test where it is added <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9517\">#9517</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Run tests in parallel via tox for 3.5x speedup <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9516\">#9516</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n<li>Enable colour in CI logs <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9486\">#9486</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n<li>Update Ghostscript to 10.7.0 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9469\">#9469</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Simplify TGA test code <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9477\">#9477</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update tests to check for ValueError when encoding an empty image <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9464\">#9464</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Upgrade CI from <code>macos-15-intel</code> to <code>macos-26-intel</code> <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9454\">#9454</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n<li>Add check-case-conflict hook <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9446\">#9446</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Specify platform when pulling docker image <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9440\">#9440</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>GHA: Cache libavif and webp builds for Ubuntu <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9437\">#9437</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n<li>Update macOS tested Pillow versions <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9431\">#9431</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n</ul>\n<h2>Other changes</h2>\n<ul>\n<li>Check calloc return value <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9527\">#9527</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Check all allocs in the Arrow tree <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9488\">#9488</a> [<a href=\"https://github.com/wiredfool\"><code>@​wiredfool</code></a>]</li>\n<li>Reject non-numeric elements inside list coords <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9526\">#9526</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n<li>Move variable declaration inside define <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9525\">#9525</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n</ul>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst\">pillow's changelog</a>.</em></p>\n<blockquote>\n<h1>Changelog (Pillow)</h1>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/3c41c095064200a02672d89cc5ff629eaf4b0d4f\"><code>3c41c09</code></a> 12.2.0 version bump</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/cdaa29eb520291c4f1fb50fb71ae46502d41e460\"><code>cdaa29e</code></a> Check calloc return value (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9527\">#9527</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/585b2f5a780722c8a5bfffb3a40f7f42e8a205be\"><code>585b2f5</code></a> Check calloc return value</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/ecf011ea15991d4cebacd946e58270cc30b0f2c1\"><code>ecf011e</code></a> Check all allocs in the Arrow tree (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9488\">#9488</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/cf6de8ca9b23e714aa5310e1c791eda66fc0b670\"><code>cf6de8c</code></a> Reject non-numeric elements inside list coords (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9526\">#9526</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/ffdcede6516b28d9667c92929854023d17048b64\"><code>ffdcede</code></a> Update 12.2.0 release notes (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9522\">#9522</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/7929d7760fe5a307ba5ae6eabdf70ae4486b147c\"><code>7929d77</code></a> Added security release notes (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/149\">#149</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/c4f7aa5dfb4dbd1242978ac235e01b9934ec6d3c\"><code>c4f7aa5</code></a> Added security release notes</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/22cdb5f2e4b15250c06563b1124ac1667342712f\"><code>22cdb5f</code></a> Move variable declaration inside define (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9525\">#9525</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/fc15b3b01899408ec989d7804c5283e13802d057\"><code>fc15b3b</code></a> Resize tall images vertically first (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9524\">#9524</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/python-pillow/Pillow/compare/11.1.0...12.2.0\">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pillow&package-manager=uv&previous-version=11.1.0&new-version=12.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/rsnodgrass/hass-xantech/network/alerts).\n\n</details>","reactions":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/22/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/22/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/comments/4240028449","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/22#issuecomment-4240028449","issue_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/22","id":4240028449,"node_id":"IC_kwDODgezOs78ubMh","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"created_at":"2026-04-13T22:29:03Z","updated_at":"2026-04-13T22:29:03Z","body":"<!--mesa-description-comment-->\n## Mesa Description\n## TL;DR\nBumped the `pillow` Python library from version 11.1.0 to 12.2.0.\n\n## What changed?\nThe `pillow` dependency has been updated to version 12.2.0. This new version includes numerous updates to its internal dependencies (such as `xz`, `libjpeg-turbo`, `libpng`, `freetype`, `libavif`, `harfbuzz`, and `Ghostscript`), various documentation improvements, enhancements to testing infrastructure (including parallel test execution), and other internal code changes for improved stability and security.\n\n<sup>_Description generated by Mesa. [Update settings](https://wrangler.app.mesa.dev/rsnodgrass/settings/pull-requests)_</sup>","reactions":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/comments/4240028449/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":{"id":1050077,"client_id":"Iv23ctnwFpXXXcieMEkw","slug":"mesa-dot-dev","node_id":"A_kwHOCxeKBc4AEAXd","owner":{"login":"mesa-dot-dev","id":186092037,"node_id":"O_kgDOCxeKBQ","avatar_url":"https://avatars.githubusercontent.com/u/186092037?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev","html_url":"https://github.com/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev/followers","following_url":"https://api.github.com/users/mesa-dot-dev/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev/repos","events_url":"https://api.github.com/users/mesa-dot-dev/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev/received_events","type":"Organization","user_view_type":"public","site_admin":false},"name":"mesa-dot-dev","description":"","external_url":"https://mesa.dev","html_url":"https://github.com/apps/mesa-dot-dev","created_at":"2024-11-08T02:36:46Z","updated_at":"2026-02-18T18:38:38Z","permissions":{"actions":"write","administration":"read","checks":"write","contents":"write","emails":"read","issues":"write","members":"read","metadata":"read","organization_administration":"read","pull_requests":"write","statuses":"read"},"events":["commit_comment","create","issues","issue_comment","label","pull_request","pull_request_review","pull_request_review_comment","pull_request_review_thread","push"]}}},"public":true,"created_at":"2026-04-13T22:29:03Z"},{"id":"10539372741","type":"DeleteEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"ref":"dependabot/uv/pillow-12.1.1","ref_type":"branch","full_ref":"refs/heads/dependabot/uv/pillow-12.1.1","pusher_type":"user"},"public":true,"created_at":"2026-04-13T22:28:40Z"},{"id":"8377128110","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"closed","number":16,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/16","id":3272629402,"number":16,"head":{"ref":"dependabot/uv/pillow-12.1.1","sha":"e4d8a9d9874fd0c1257db1ea38f43150bb6b796f","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"0cb03b139beb87d1483a1249de879454e76c0b19","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}}},"public":true,"created_at":"2026-02-23T08:11:51Z"},{"id":"8377127974","type":"IssueCommentEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/16","repository_url":"https://api.github.com/repos/rsnodgrass/hass-xantech","labels_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/16/comments","events_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/16/events","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/16","id":3927672139,"node_id":"PR_kwDODgezOs7DEFya","number":16,"title":"Bump pillow from 11.1.0 to 12.1.1","user":{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}],"state":"closed","locked":false,"assignees":[],"milestone":null,"comments":2,"created_at":"2026-02-11T17:11:26Z","updated_at":"2026-04-13T22:28:41Z","closed_at":"2026-04-13T22:28:39Z","assignee":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/16","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/16","diff_url":"https://github.com/rsnodgrass/hass-xantech/pull/16.diff","patch_url":"https://github.com/rsnodgrass/hass-xantech/pull/16.patch","merged_at":null},"body":"Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.1.0 to 12.1.1.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/python-pillow/Pillow/releases\">pillow's releases</a>.</em></p>\n<blockquote>\n<h2>12.1.1</h2>\n<p><a href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html\">https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html</a></p>\n<h2>Dependencies</h2>\n<ul>\n<li>Patch libavif for svt-av1 4.0 compatibility <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9413\">#9413</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n</ul>\n<h2>Other changes</h2>\n<ul>\n<li>Fix OOB Write with invalid tile extents <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\">#9427</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n</ul>\n<h2>12.1.0</h2>\n<p><a href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html\">https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html</a></p>\n<h2>Deprecations</h2>\n<ul>\n<li>Deprecate getdata(), in favour of new get_flattened_data() <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9292\">#9292</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n</ul>\n<h2>Documentation</h2>\n<ul>\n<li>Specify APNG duration type when opening <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9368\">#9368</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Added release notes for <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9350\">#9350</a> <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9366\">#9366</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update ImageMorph documentation <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9349\">#9349</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Docs: update major bump cadence <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9334\">#9334</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n<li>Add release notes for <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9070\">#9070</a> <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9320\">#9320</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Updated Ubuntu version <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9306\">#9306</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update macOS tested Pillow versions <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9265\">#9265</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n</ul>\n<h2>Dependencies</h2>\n<ul>\n<li>Update harfbuzz to 12.3.0 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9355\">#9355</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update xz to 5.8.2 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9343\">#9343</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Updated libjpeg-turbo to 3.1.3 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9333\">#9333</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Updated zlib-ng to 2.3.2 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9324\">#9324</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Updated libpng to 1.6.53 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9325\">#9325</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update actions/checkout action to v6 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9323\">#9323</a> [@<a href=\"https://github.com/apps/renovate\">renovate[bot]</a>]</li>\n<li>Update dependency mypy to v1.19.0 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9322\">#9322</a> [@<a href=\"https://github.com/apps/renovate\">renovate[bot]</a>]</li>\n<li>Updated libpng to 1.6.51 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9305\">#9305</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Updated brotli to 1.2.0 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9284\">#9284</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update libimagequant to 4.4.1 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9301\">#9301</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update zlib-ng to 2.3.1, except on manylinux2014 aarch64 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9312\">#9312</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Updated harfbuzz to 12.2.0 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9289\">#9289</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Update github-actions <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9277\">#9277</a> [@<a href=\"https://github.com/apps/renovate\">renovate[bot]</a>]</li>\n</ul>\n<h2>Testing</h2>\n<ul>\n<li>Replace pre-commit with prek <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9360\">#9360</a> [<a href=\"https://github.com/hugovk\"><code>@​hugovk</code></a>]</li>\n<li>Test PyQt6 on Python 3.14 on Windows <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9353\">#9353</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Test 32-bit Windows on Windows Server 2022 <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9345\">#9345</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n<li>Correct variable type <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9335\">#9335</a> [<a href=\"https://github.com/radarhere\"><code>@​radarhere</code></a>]</li>\n</ul>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst\">pillow's changelog</a>.</em></p>\n<blockquote>\n<h1>Changelog (Pillow)</h1>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/5158d98c807e719c5938aa3886913ef0ea6814e9\"><code>5158d98</code></a> 12.1.1 version bump</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/9000313cc5d4a31bdcdd6d7f0781101abab553aa\"><code>9000313</code></a> Fix OOB Write with invalid tile extents (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9427\">#9427</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/cd0111849fb32c40860e3ee3d57b9b1cee4260cf\"><code>cd01118</code></a> Patch libavif for svt-av1 4.0 compatibility</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/46f45f674d47b5d8bc54230dda8fe9e214598b87\"><code>46f45f6</code></a> 12.1.0 version bump</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/c9ac097edb5594f63c40acd9afe6802547200379\"><code>c9ac097</code></a> Simplify band splitting (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9291\">#9291</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/3baedf264804d199bc19458d11bcff02ce7598eb\"><code>3baedf2</code></a> Deprecate getdata(), in favour of new get_flattened_data() (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9292\">#9292</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/b51a0366852c1d519d108dfec8fc2d738cd8080f\"><code>b51a036</code></a> Specify APNG duration type when opening (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9368\">#9368</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/8d08e31533065b623399a54bc92b39a756599ad4\"><code>8d08e31</code></a> Add release notes for <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9348\">#9348</a> (<a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9369\">#9369</a>)</li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/432707ea810ae619e2a9e4a9737c169cacaa8eda\"><code>432707e</code></a> Added release notes for <a href=\"https://redirect.github.com/python-pillow/Pillow/issues/9348\">#9348</a></li>\n<li><a href=\"https://github.com/python-pillow/Pillow/commit/2d589107fb3a4aba8389932a65ff771bf9b4deb1\"><code>2d58910</code></a> Specify APNG duration type when opening</li>\n<li>Additional commits viewable in <a href=\"https://github.com/python-pillow/Pillow/compare/11.1.0...12.1.1\">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pillow&package-manager=uv&previous-version=11.1.0&new-version=12.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/rsnodgrass/hass-xantech/network/alerts).\n\n</details>","reactions":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/16/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/16/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/comments/4240026760","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/16#issuecomment-4240026760","issue_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/16","id":4240026760,"node_id":"IC_kwDODgezOs78uayI","user":{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"created_at":"2026-04-13T22:28:38Z","updated_at":"2026-04-13T22:28:38Z","body":"Superseded by #22.","reactions":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/comments/4240026760/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":{"id":29110,"client_id":"Iv1.4f9a6346434f815e","slug":"dependabot","node_id":"MDM6QXBwMjkxMTA=","owner":{"login":"github","id":9919,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk5MTk=","avatar_url":"https://avatars.githubusercontent.com/u/9919?v=4","gravatar_id":"","url":"https://api.github.com/users/github","html_url":"https://github.com/github","followers_url":"https://api.github.com/users/github/followers","following_url":"https://api.github.com/users/github/following{/other_user}","gists_url":"https://api.github.com/users/github/gists{/gist_id}","starred_url":"https://api.github.com/users/github/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github/subscriptions","organizations_url":"https://api.github.com/users/github/orgs","repos_url":"https://api.github.com/users/github/repos","events_url":"https://api.github.com/users/github/events{/privacy}","received_events_url":"https://api.github.com/users/github/received_events","type":"Organization","user_view_type":"public","site_admin":false},"name":"Dependabot","description":"GitHub Dependabot","external_url":"https://dependabot-api.githubapp.com","html_url":"https://github.com/apps/dependabot","created_at":"2019-04-16T22:34:25Z","updated_at":"2025-06-11T21:07:45Z","permissions":{"actions":"write","checks":"write","contents":"write","issues":"write","members":"read","metadata":"read","pull_requests":"write","statuses":"read","vulnerability_alerts":"read","workflows":"write"},"events":["check_suite","issues","issue_comment","label","pull_request","pull_request_review","pull_request_review_comment","repository"]}}},"public":true,"created_at":"2026-04-13T22:28:38Z"},{"id":"8377127432","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"labeled","number":22,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","id":3525491741,"number":22,"head":{"ref":"dependabot/uv/pillow-12.2.0","sha":"05a36af4063dd61c8dbcf289279e635e1b4bb181","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"label":{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}]},"public":true,"created_at":"2026-04-13T22:28:37Z"},{"id":"8377127429","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"labeled","number":22,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","id":3525491741,"number":22,"head":{"ref":"dependabot/uv/pillow-12.2.0","sha":"05a36af4063dd61c8dbcf289279e635e1b4bb181","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"label":{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}]},"public":true,"created_at":"2026-04-13T22:28:37Z"},{"id":"8377127290","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"labeled","number":22,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","id":3525491741,"number":22,"head":{"ref":"dependabot/uv/pillow-12.2.0","sha":"05a36af4063dd61c8dbcf289279e635e1b4bb181","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"label":{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}]},"public":true,"created_at":"2026-04-13T22:28:37Z"},{"id":"8377127287","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"labeled","number":22,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","id":3525491741,"number":22,"head":{"ref":"dependabot/uv/pillow-12.2.0","sha":"05a36af4063dd61c8dbcf289279e635e1b4bb181","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"label":{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}]},"public":true,"created_at":"2026-04-13T22:28:37Z"},{"id":"10539371860","type":"CreateEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"ref":"dependabot/uv/pillow-12.2.0","ref_type":"branch","full_ref":"refs/heads/dependabot/uv/pillow-12.2.0","master_branch":"master","description":"Xantech Multi-Zone Matrix Audio for Home Assistant","pusher_type":"user"},"public":true,"created_at":"2026-04-13T22:28:37Z"},{"id":"8377126991","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"opened","number":22,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/22","id":3525491741,"number":22,"head":{"ref":"dependabot/uv/pillow-12.2.0","sha":"05a36af4063dd61c8dbcf289279e635e1b4bb181","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}}},"public":true,"created_at":"2026-04-13T22:28:37Z"},{"id":"8368386562","type":"IssueCommentEvent","actor":{"id":10816320,"login":"georgesak","display_login":"georgesak","gravatar_id":"","url":"https://api.github.com/users/georgesak","avatar_url":"https://avatars.githubusercontent.com/u/10816320?"},"repo":{"id":767015005,"name":"georgesak/home-assistant-crestron-component","url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12","repository_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component","labels_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/comments","events_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/events","html_url":"https://github.com/georgesak/home-assistant-crestron-component/issues/12","id":4249079001,"node_id":"I_kwDOLbe4Xc79Q8zZ","number":12,"title":"Not compatible with 2026","user":{"login":"the-white-wizard","id":11576475,"node_id":"MDQ6VXNlcjExNTc2NDc1","avatar_url":"https://avatars.githubusercontent.com/u/11576475?v=4","gravatar_id":"","url":"https://api.github.com/users/the-white-wizard","html_url":"https://github.com/the-white-wizard","followers_url":"https://api.github.com/users/the-white-wizard/followers","following_url":"https://api.github.com/users/the-white-wizard/following{/other_user}","gists_url":"https://api.github.com/users/the-white-wizard/gists{/gist_id}","starred_url":"https://api.github.com/users/the-white-wizard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/the-white-wizard/subscriptions","organizations_url":"https://api.github.com/users/the-white-wizard/orgs","repos_url":"https://api.github.com/users/the-white-wizard/repos","events_url":"https://api.github.com/users/the-white-wizard/events{/privacy}","received_events_url":"https://api.github.com/users/the-white-wizard/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-04-12T17:23:27Z","updated_at":"2026-04-13T17:43:50Z","closed_at":null,"assignee":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"I'm adding some Zigbee devices to my home system, and therefore transitioning from using homebridge to HA. I've got this working by rolling back to 2025.1.1, but when I initially tried this on a 2026 version, I ran into a bunch of errors.\n\nJust wondering if there are any planned updates to this to bring it up to speed? Just checking in case the work is already underway, before I try tinkering - you'd no doubt do a much better job than me!","reactions":{"url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null},"comment":{"url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/comments/4238448732","html_url":"https://github.com/georgesak/home-assistant-crestron-component/issues/12#issuecomment-4238448732","issue_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12","id":4238448732,"node_id":"IC_kwDOLbe4Xc78oZhc","user":{"login":"georgesak","id":10816320,"node_id":"MDQ6VXNlcjEwODE2MzIw","avatar_url":"https://avatars.githubusercontent.com/u/10816320?v=4","gravatar_id":"","url":"https://api.github.com/users/georgesak","html_url":"https://github.com/georgesak","followers_url":"https://api.github.com/users/georgesak/followers","following_url":"https://api.github.com/users/georgesak/following{/other_user}","gists_url":"https://api.github.com/users/georgesak/gists{/gist_id}","starred_url":"https://api.github.com/users/georgesak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/georgesak/subscriptions","organizations_url":"https://api.github.com/users/georgesak/orgs","repos_url":"https://api.github.com/users/georgesak/repos","events_url":"https://api.github.com/users/georgesak/events{/privacy}","received_events_url":"https://api.github.com/users/georgesak/received_events","type":"User","user_view_type":"public","site_admin":false},"created_at":"2026-04-13T17:43:50Z","updated_at":"2026-04-13T17:43:50Z","body":"Can you provide more info on what is breaking exactly and any logs?\n\nI'm using the module with the latest HA (I always keep up to date) and have no issues on my end. But I'm also not using every module, so something could be broken without me noticing.","pin":null,"reactions":{"url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/comments/4238448732/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2026-04-13T17:43:50Z"},{"id":"8331432755","type":"IssuesEvent","actor":{"id":11576475,"login":"the-white-wizard","display_login":"the-white-wizard","gravatar_id":"","url":"https://api.github.com/users/the-white-wizard","avatar_url":"https://avatars.githubusercontent.com/u/11576475?"},"repo":{"id":767015005,"name":"georgesak/home-assistant-crestron-component","url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component"},"payload":{"action":"opened","issue":{"url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12","repository_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component","labels_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/comments","events_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/events","html_url":"https://github.com/georgesak/home-assistant-crestron-component/issues/12","id":4249079001,"node_id":"I_kwDOLbe4Xc79Q8zZ","number":12,"title":"Not compatible with 2026","user":{"login":"the-white-wizard","id":11576475,"node_id":"MDQ6VXNlcjExNTc2NDc1","avatar_url":"https://avatars.githubusercontent.com/u/11576475?v=4","gravatar_id":"","url":"https://api.github.com/users/the-white-wizard","html_url":"https://github.com/the-white-wizard","followers_url":"https://api.github.com/users/the-white-wizard/followers","following_url":"https://api.github.com/users/the-white-wizard/following{/other_user}","gists_url":"https://api.github.com/users/the-white-wizard/gists{/gist_id}","starred_url":"https://api.github.com/users/the-white-wizard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/the-white-wizard/subscriptions","organizations_url":"https://api.github.com/users/the-white-wizard/orgs","repos_url":"https://api.github.com/users/the-white-wizard/repos","events_url":"https://api.github.com/users/the-white-wizard/events{/privacy}","received_events_url":"https://api.github.com/users/the-white-wizard/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-04-12T17:23:27Z","updated_at":"2026-04-13T17:43:50Z","closed_at":null,"assignee":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"I'm adding some Zigbee devices to my home system, and therefore transitioning from using homebridge to HA. I've got this working by rolling back to 2025.1.1, but when I initially tried this on a 2026 version, I ran into a bunch of errors.\n\nJust wondering if there are any planned updates to this to bring it up to speed? Just checking in case the work is already underway, before I try tinkering - you'd no doubt do a much better job than me!","reactions":{"url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/georgesak/home-assistant-crestron-component/issues/12/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null}},"public":true,"created_at":"2026-04-12T17:23:30Z"},{"id":"8298781889","type":"PullRequestReviewEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"review":{"id":4092147762,"node_id":"PRR_kwDODgezOs7z6Tgy","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"Performed full review of **9276193...860455c**\n### Analysis\n• **PR Scope Contamination (CRITICAL)**: This Dependabot PR contains unrelated feature commits (4 source code files changed across 3 commits including \"sonance6\" feature additions) mixed with the uv dependency update. Dependabot PRs should only modify lockfiles; feature changes must be separated into distinct PRs for proper review and audit trail integrity.\n\n• **Missing uv Version Pinning**: The repository lacks explicit version pinning for the `uv` tool itself. Different developers and CI systems will use different versions, causing non-deterministic lockfile regeneration and defeating reproducibility. Implement version pinning via GitHub Actions workflow configuration, `.tool-versions` file, or CI environment specification before merging any uv updates.\n\n• **Untested Major Dependency Resolution Changes**: The uv 0.6.10 → 0.11.6 bump produces a massive lockfile change (3,249 deletions, 392 insertions) indicating significant re-resolution of transitive dependencies. Without running the full test suite against this new dependency tree, you risk subtle breaking changes or incompatibilities in untested dependency combinations.\n\n\n> [!TIP]\n> <details>\n> <summary>Help</summary>\n>\n> \n> **Slash Commands:**\n> - `/review` - Request a full code review\n> - `/review latest` - Review only changes since the last review\n> - `/describe` - Generate PR description. This will update the PR body or issue comment depending on your configuration\n> - `/help` - Get help with Mesa commands and configuration options\n> \n> </details>\n\n<sup>0 files reviewed | 0 comments | [Edit Agent Settings](https://wrangler.app.mesa.dev/rsnodgrass/agents) • [Read Docs](https://docs.mesa.dev/) <!--v:3.0 env:production--></sup>","commit_id":"860455cb41190b6152e1e916e469fe7c12cba4a6","state":"commented","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/21#pullrequestreview-4092147762","pull_request_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","_links":{"html":{"href":"https://github.com/rsnodgrass/hass-xantech/pull/21#pullrequestreview-4092147762"},"pull_request":{"href":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21"}},"submitted_at":"2026-04-10T19:50:38Z","updated_at":"2026-04-10T19:50:38Z"},"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","id":3515722837,"number":21,"head":{"ref":"dependabot/uv/uv-0.11.6","sha":"860455cb41190b6152e1e916e469fe7c12cba4a6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"action":"created"},"public":true,"created_at":"2026-04-10T19:50:39Z"},{"id":"8298781876","type":"PullRequestReviewEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"review":{"id":4092147762,"node_id":"PRR_kwDODgezOs7z6Tgy","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"Performed full review of **9276193...860455c**\n### Analysis\n• **PR Scope Contamination (CRITICAL)**: This Dependabot PR contains unrelated feature commits (4 source code files changed across 3 commits including \"sonance6\" feature additions) mixed with the uv dependency update. Dependabot PRs should only modify lockfiles; feature changes must be separated into distinct PRs for proper review and audit trail integrity.\n\n• **Missing uv Version Pinning**: The repository lacks explicit version pinning for the `uv` tool itself. Different developers and CI systems will use different versions, causing non-deterministic lockfile regeneration and defeating reproducibility. Implement version pinning via GitHub Actions workflow configuration, `.tool-versions` file, or CI environment specification before merging any uv updates.\n\n• **Untested Major Dependency Resolution Changes**: The uv 0.6.10 → 0.11.6 bump produces a massive lockfile change (3,249 deletions, 392 insertions) indicating significant re-resolution of transitive dependencies. Without running the full test suite against this new dependency tree, you risk subtle breaking changes or incompatibilities in untested dependency combinations.\n\n\n> [!TIP]\n> <details>\n> <summary>Help</summary>\n>\n> \n> **Slash Commands:**\n> - `/review` - Request a full code review\n> - `/review latest` - Review only changes since the last review\n> - `/describe` - Generate PR description. This will update the PR body or issue comment depending on your configuration\n> - `/help` - Get help with Mesa commands and configuration options\n> \n> </details>\n\n<sup>0 files reviewed | 0 comments | [Edit Agent Settings](https://wrangler.app.mesa.dev/rsnodgrass/agents) • [Read Docs](https://docs.mesa.dev/) <!--v:3.0 env:production--></sup>","commit_id":"860455cb41190b6152e1e916e469fe7c12cba4a6","state":"commented","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/21#pullrequestreview-4092147762","pull_request_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","_links":{"html":{"href":"https://github.com/rsnodgrass/hass-xantech/pull/21#pullrequestreview-4092147762"},"pull_request":{"href":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21"}},"submitted_at":"2026-04-10T19:50:38Z","updated_at":"2026-04-10T19:50:38Z"},"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","id":3515722837,"number":21,"head":{"ref":"dependabot/uv/uv-0.11.6","sha":"860455cb41190b6152e1e916e469fe7c12cba4a6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"action":"updated"},"public":true,"created_at":"2026-04-10T19:50:39Z"},{"id":"8298625297","type":"IssueCommentEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/21","repository_url":"https://api.github.com/repos/rsnodgrass/hass-xantech","labels_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/21/labels{/name}","comments_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/21/comments","events_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/21/events","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/21","id":4241390657,"node_id":"PR_kwDODgezOs7RjaxV","number":21,"title":"Bump uv from 0.6.10 to 0.11.6","user":{"login":"dependabot[bot]","id":49699333,"node_id":"MDM6Qm90NDk2OTkzMzM=","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4","gravatar_id":"","url":"https://api.github.com/users/dependabot%5Bbot%5D","html_url":"https://github.com/apps/dependabot","followers_url":"https://api.github.com/users/dependabot%5Bbot%5D/followers","following_url":"https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dependabot%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/dependabot%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/dependabot%5Bbot%5D/repos","events_url":"https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/dependabot%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-04-10T19:44:22Z","updated_at":"2026-04-10T19:50:38Z","closed_at":null,"assignee":null,"active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/21","diff_url":"https://github.com/rsnodgrass/hass-xantech/pull/21.diff","patch_url":"https://github.com/rsnodgrass/hass-xantech/pull/21.patch","merged_at":null},"body":"Bumps [uv](https://github.com/astral-sh/uv) from 0.6.10 to 0.11.6.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/astral-sh/uv/releases\">uv's releases</a>.</em></p>\n<blockquote>\n<h2>0.11.6</h2>\n<h2>Release Notes</h2>\n<p>Released on 2026-04-09.</p>\n<p>This release resolves a low severity security advisory in which wheels with malformed RECORD entries could delete arbitrary files on uninstall. See <a href=\"https://github.com/astral-sh/uv/security/advisories/GHSA-pjjw-68hj-v9mw\">GHSA-pjjw-68hj-v9mw</a> for details.</p>\n<h3>Bug fixes</h3>\n<ul>\n<li>Do not remove files outside the venv on uninstall (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18942\">#18942</a>)</li>\n<li>Validate and heal wheel <code>RECORD</code> during installation (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18943\">#18943</a>)</li>\n<li>Avoid <code>uv cache clean</code> errors due to Win32 path normalization (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18856\">#18856</a>)</li>\n</ul>\n<h2>Install uv 0.11.6</h2>\n<h3>Install prebuilt binaries via shell script</h3>\n<pre lang=\"sh\"><code>curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-installer.sh | sh\r\n</code></pre>\n<h3>Install prebuilt binaries via powershell script</h3>\n<pre lang=\"sh\"><code>powershell -ExecutionPolicy Bypass -c &quot;irm https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-installer.ps1 | iex&quot;\r\n</code></pre>\n<h2>Download uv 0.11.6</h2>\n<table>\n<thead>\n<tr>\n<th>File</th>\n<th>Platform</th>\n<th>Checksum</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-aarch64-apple-darwin.tar.gz\">uv-aarch64-apple-darwin.tar.gz</a></td>\n<td>Apple Silicon macOS</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-aarch64-apple-darwin.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-x86_64-apple-darwin.tar.gz\">uv-x86_64-apple-darwin.tar.gz</a></td>\n<td>Intel macOS</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-x86_64-apple-darwin.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-aarch64-pc-windows-msvc.zip\">uv-aarch64-pc-windows-msvc.zip</a></td>\n<td>ARM64 Windows</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-aarch64-pc-windows-msvc.zip.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-i686-pc-windows-msvc.zip\">uv-i686-pc-windows-msvc.zip</a></td>\n<td>x86 Windows</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-i686-pc-windows-msvc.zip.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-x86_64-pc-windows-msvc.zip\">uv-x86_64-pc-windows-msvc.zip</a></td>\n<td>x64 Windows</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-x86_64-pc-windows-msvc.zip.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-aarch64-unknown-linux-gnu.tar.gz\">uv-aarch64-unknown-linux-gnu.tar.gz</a></td>\n<td>ARM64 Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-aarch64-unknown-linux-gnu.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-i686-unknown-linux-gnu.tar.gz\">uv-i686-unknown-linux-gnu.tar.gz</a></td>\n<td>x86 Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-i686-unknown-linux-gnu.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-powerpc64le-unknown-linux-gnu.tar.gz\">uv-powerpc64le-unknown-linux-gnu.tar.gz</a></td>\n<td>PPC64LE Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-riscv64gc-unknown-linux-gnu.tar.gz\">uv-riscv64gc-unknown-linux-gnu.tar.gz</a></td>\n<td>RISCV Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-s390x-unknown-linux-gnu.tar.gz\">uv-s390x-unknown-linux-gnu.tar.gz</a></td>\n<td>S390x Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-s390x-unknown-linux-gnu.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-x86_64-unknown-linux-gnu.tar.gz\">uv-x86_64-unknown-linux-gnu.tar.gz</a></td>\n<td>x64 Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-x86_64-unknown-linux-gnu.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-armv7-unknown-linux-gnueabihf.tar.gz\">uv-armv7-unknown-linux-gnueabihf.tar.gz</a></td>\n<td>ARMv7 Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-aarch64-unknown-linux-musl.tar.gz\">uv-aarch64-unknown-linux-musl.tar.gz</a></td>\n<td>ARM64 MUSL Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-aarch64-unknown-linux-musl.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-i686-unknown-linux-musl.tar.gz\">uv-i686-unknown-linux-musl.tar.gz</a></td>\n<td>x86 MUSL Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-i686-unknown-linux-musl.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-riscv64gc-unknown-linux-musl.tar.gz\">uv-riscv64gc-unknown-linux-musl.tar.gz</a></td>\n<td>RISCV MUSL Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-riscv64gc-unknown-linux-musl.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-x86_64-unknown-linux-musl.tar.gz\">uv-x86_64-unknown-linux-musl.tar.gz</a></td>\n<td>x64 MUSL Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-x86_64-unknown-linux-musl.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-arm-unknown-linux-musleabihf.tar.gz\">uv-arm-unknown-linux-musleabihf.tar.gz</a></td>\n<td>ARMv6 MUSL Linux (Hardfloat)</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-arm-unknown-linux-musleabihf.tar.gz.sha256\">checksum</a></td>\n</tr>\n<tr>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-armv7-unknown-linux-musleabihf.tar.gz\">uv-armv7-unknown-linux-musleabihf.tar.gz</a></td>\n<td>ARMv7 MUSL Linux</td>\n<td><a href=\"https://releases.astral.sh/github/uv/releases/download/0.11.6/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256\">checksum</a></td>\n</tr>\n</tbody>\n</table>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/astral-sh/uv/blob/main/CHANGELOG.md\">uv's changelog</a>.</em></p>\n<blockquote>\n<h2>0.11.6</h2>\n<p>Released on 2026-04-09.</p>\n<p>This release resolves a low severity security advisory in which wheels with malformed RECORD entries could delete arbitrary files on uninstall. See <a href=\"https://github.com/astral-sh/uv/security/advisories/GHSA-pjjw-68hj-v9mw\">GHSA-pjjw-68hj-v9mw</a> for details.</p>\n<h3>Bug fixes</h3>\n<ul>\n<li>Do not remove files outside the venv on uninstall (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18942\">#18942</a>)</li>\n<li>Validate and heal wheel <code>RECORD</code> during installation (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18943\">#18943</a>)</li>\n<li>Avoid <code>uv cache clean</code> errors due to Win32 path normalization (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18856\">#18856</a>)</li>\n</ul>\n<h2>0.11.5</h2>\n<p>Released on 2026-04-08.</p>\n<h3>Python</h3>\n<ul>\n<li>Add CPython 3.13.13, 3.14.4, and 3.15.0a8 (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18908\">#18908</a>)</li>\n</ul>\n<h3>Enhancements</h3>\n<ul>\n<li>Fix <code>build_system.requires</code> error message (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18911\">#18911</a>)</li>\n<li>Remove trailing path separators in path normalization (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18915\">#18915</a>)</li>\n<li>Improve error messages for unsupported or invalid TLS certificates (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18924\">#18924</a>)</li>\n</ul>\n<h3>Preview features</h3>\n<ul>\n<li>Add <code>exclude-newer</code> to <code>[[tool.uv.index]]</code> (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18839\">#18839</a>)</li>\n<li><code>uv audit</code>: add context/warnings for ignored vulnerabilities (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18905\">#18905</a>)</li>\n</ul>\n<h3>Bug fixes</h3>\n<ul>\n<li>Normalize persisted fork markers before lock equality checks (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18612\">#18612</a>)</li>\n<li>Clear junction properly when uninstalling Python versions on Windows (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18815\">#18815</a>)</li>\n<li>Report error cleanly instead of panicking on TLS certificate error (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18904\">#18904</a>)</li>\n</ul>\n<h3>Documentation</h3>\n<ul>\n<li>Remove the legacy <code>PIP_COMPATIBILITY.md</code> redirect file (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18928\">#18928</a>)</li>\n<li>Fix <code>uv init example-bare --bare</code> examples (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18822\">#18822</a>, <a href=\"https://redirect.github.com/astral-sh/uv/pull/18925\">#18925</a>)</li>\n</ul>\n<h2>0.11.4</h2>\n<p>Released on 2026-04-07.</p>\n<h3>Enhancements</h3>\n<ul>\n<li>Add support for <code>--upgrade-group</code> (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18266\">#18266</a>)</li>\n<li>Merge repeated archive URL hashes by version ID (<a href=\"https://redirect.github.com/astral-sh/uv/pull/18841\">#18841</a>)</li>\n</ul>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/astral-sh/uv/commit/65950801cc3c609b65be34938bb407ab6e30a9fe\"><code>6595080</code></a> Bump version to 0.11.6 (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18948\">#18948</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/7983c7a5bef236fd8a04580fcedae7bd5bde4cdb\"><code>7983c7a</code></a> Validate and heal RECORD during installation (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18943\">#18943</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/b38439bfc731d5281e933656ce2e5b910da037b0\"><code>b38439b</code></a> Avoid <code>uv cache clean</code> errors due to Win32 path normalization (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18856\">#18856</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/a0e461ac44851f9a0f6e8974733e77d46f7a9ea9\"><code>a0e461a</code></a> Do not remove files outside the venv on uninstall (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18942\">#18942</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/95eaa68c8df627eb915bc355831fd7d169d91fe3\"><code>95eaa68</code></a> Bump version to 0.11.5 (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18930\">#18930</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/f6d67d57c1a9f17f7ab233654b55e061eb4bfd10\"><code>f6d67d5</code></a> Improve certificate loading error messages (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18924\">#18924</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/39b83c30e0cdaed833e88564878376f9361987d2\"><code>39b83c3</code></a> Add <code>exclude-newer</code> to <code>[[tool.uv.index]]</code> (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18839\">#18839</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/7924ba5b1419345dc5b9a9a16e6bcba2b59a41a6\"><code>7924ba5</code></a> uv audit: add context/warnings for ignored vulnerabilities (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18905\">#18905</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/a352ce01eab5f19bbd5929f2a5f346187552ee7c\"><code>a352ce0</code></a> Remove the legacy PIP_COMPATIBILITY.md redirect file (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18928\">#18928</a>)</li>\n<li><a href=\"https://github.com/astral-sh/uv/commit/33b633891181f768568bfc3196039d368417fe98\"><code>33b6338</code></a> Normalize persisted fork markers before lock equality checks (<a href=\"https://redirect.github.com/astral-sh/uv/issues/18612\">#18612</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/astral-sh/uv/compare/0.6.10...0.11.6\">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uv&package-manager=uv&previous-version=0.6.10&new-version=0.11.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/rsnodgrass/hass-xantech/network/alerts).\n\n</details>","reactions":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/21/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/21/timeline","performed_via_github_app":null,"state_reason":null},"comment":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/comments/4226336475","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/21#issuecomment-4226336475","issue_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/21","id":4226336475,"node_id":"IC_kwDODgezOs776Mbb","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"created_at":"2026-04-10T19:44:50Z","updated_at":"2026-04-10T19:44:50Z","body":"<!--mesa-description-comment-->\n## Mesa Description\n## TL;DR\nBumps the `uv` dependency from version 0.6.10 to 0.11.6, including a fix for a low severity security vulnerability in wheel uninstallation.\n\n## What changed?\n- Updated `uv` dependency from 0.6.10 to 0.11.6, primarily reflected in `uv.lock`.\n- Incorporates bug fixes, notably addressing a security advisory (GHSA-pjjw-68hj-v9mw) where malformed wheel `RECORD` entries could lead to arbitrary file deletion on uninstall.\n- Includes validation and healing of wheel `RECORD` during installation and prevents removal of files outside the venv on uninstall.\n- Introduces various enhancements and additional bug fixes across versions 0.11.4, 0.11.5, and 0.11.6, such as improved error messages and handling of Python versions.\n\n<sup>_Description generated by Mesa. [Update settings](https://wrangler.app.mesa.dev/rsnodgrass/settings/pull-requests)_</sup>","reactions":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/issues/comments/4226336475/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":{"id":1050077,"client_id":"Iv23ctnwFpXXXcieMEkw","slug":"mesa-dot-dev","node_id":"A_kwHOCxeKBc4AEAXd","owner":{"login":"mesa-dot-dev","id":186092037,"node_id":"O_kgDOCxeKBQ","avatar_url":"https://avatars.githubusercontent.com/u/186092037?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev","html_url":"https://github.com/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev/followers","following_url":"https://api.github.com/users/mesa-dot-dev/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev/repos","events_url":"https://api.github.com/users/mesa-dot-dev/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev/received_events","type":"Organization","user_view_type":"public","site_admin":false},"name":"mesa-dot-dev","description":"","external_url":"https://mesa.dev","html_url":"https://github.com/apps/mesa-dot-dev","created_at":"2024-11-08T02:36:46Z","updated_at":"2026-02-18T18:38:38Z","permissions":{"actions":"write","administration":"read","checks":"write","contents":"write","emails":"read","issues":"write","members":"read","metadata":"read","organization_administration":"read","pull_requests":"write","statuses":"read"},"events":["commit_comment","create","issues","issue_comment","label","pull_request","pull_request_review","pull_request_review_comment","pull_request_review_thread","push"]}}},"public":true,"created_at":"2026-04-10T19:44:50Z"},{"id":"8298614244","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"labeled","number":21,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","id":3515722837,"number":21,"head":{"ref":"dependabot/uv/uv-0.11.6","sha":"860455cb41190b6152e1e916e469fe7c12cba4a6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"label":{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}]},"public":true,"created_at":"2026-04-10T19:44:23Z"},{"id":"8298614242","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"labeled","number":21,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","id":3515722837,"number":21,"head":{"ref":"dependabot/uv/uv-0.11.6","sha":"860455cb41190b6152e1e916e469fe7c12cba4a6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"label":{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}]},"public":true,"created_at":"2026-04-10T19:44:23Z"},{"id":"8298613994","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"labeled","number":21,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","id":3515722837,"number":21,"head":{"ref":"dependabot/uv/uv-0.11.6","sha":"860455cb41190b6152e1e916e469fe7c12cba4a6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"label":{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}]},"public":true,"created_at":"2026-04-10T19:44:22Z"},{"id":"8298613991","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"labeled","number":21,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","id":3515722837,"number":21,"head":{"ref":"dependabot/uv/uv-0.11.6","sha":"860455cb41190b6152e1e916e469fe7c12cba4a6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"label":{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"},"labels":[{"id":10121913292,"node_id":"LA_kwDODgezOs8AAAACW1AjzA","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10121913297,"node_id":"LA_kwDODgezOs8AAAACW1Aj0Q","url":"https://api.github.com/repos/rsnodgrass/hass-xantech/labels/python:uv","name":"python:uv","color":"2b67c6","default":false,"description":"Pull requests that update python:uv code"}]},"public":true,"created_at":"2026-04-10T19:44:22Z"},{"id":"10437954855","type":"CreateEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"ref":"dependabot/uv/uv-0.11.6","ref_type":"branch","full_ref":"refs/heads/dependabot/uv/uv-0.11.6","master_branch":"master","description":"Xantech Multi-Zone Matrix Audio for Home Assistant","pusher_type":"user"},"public":true,"created_at":"2026-04-10T19:44:22Z"},{"id":"8298613192","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"opened","number":21,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/21","id":3515722837,"number":21,"head":{"ref":"dependabot/uv/uv-0.11.6","sha":"860455cb41190b6152e1e916e469fe7c12cba4a6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"9276193cf65f0600545c57e8f51d87c95346b2c6","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}}},"public":true,"created_at":"2026-04-10T19:44:22Z"},{"id":"10431063142","type":"PushEvent","actor":{"id":2199132,"login":"rsnodgrass","display_login":"rsnodgrass","gravatar_id":"","url":"https://api.github.com/users/rsnodgrass","avatar_url":"https://avatars.githubusercontent.com/u/2199132?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"repository_id":235385658,"push_id":32723505826,"ref":"refs/heads/master","head":"9276193cf65f0600545c57e8f51d87c95346b2c6","before":"0cb03b139beb87d1483a1249de879454e76c0b19"},"public":true,"created_at":"2026-04-10T16:13:19Z"},{"id":"8292503604","type":"PullRequestEvent","actor":{"id":1692601,"login":"haklai","display_login":"haklai","gravatar_id":"","url":"https://api.github.com/users/haklai","avatar_url":"https://avatars.githubusercontent.com/u/1692601?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"merged","number":20,"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20","id":3513773968,"number":20,"head":{"ref":"sonance-fixes","sha":"16a20ebd18251de20f33593f57014acd742f5e98","repo":{"id":1205048306,"url":"https://api.github.com/repos/haklai/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"0cb03b139beb87d1483a1249de879454e76c0b19","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}}},"public":true,"created_at":"2026-04-10T16:13:17Z"},{"id":"8284028964","type":"PullRequestReviewEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"review":{"id":4089442730,"node_id":"PRR_kwDODgezOs7zv_Gq","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"Performed full review of **0cb03b1...16a20eb**\n### Analysis\n• Configuration constants are duplicated between the pyxantech library's device config and the HA integration's const.py, violating DRY principles and creating a maintenance burden when device specifications change.\n\n• Inconsistent data sourcing: Sonance6 ranges hardcode constants from const.py while other amp types query get_device_config(), creating a confusing asymmetry that should be unified.\n\n• Device-specific conditionals (amp_type == AMP_TYPE_SONANCE6) are scattered across multiple files without abstraction, leading to growing complexity as more non-standard amp types are added.\n\n• Volume range calculations and float-to-int conversions lack validation for edge cases like inverted min/max values and floating-point precision errors near boundaries.\n\n\n> [!TIP]\n> <details>\n> <summary>Help</summary>\n>\n> \n> **Slash Commands:**\n> - `/review` - Request a full code review\n> - `/review latest` - Review only changes since the last review\n> - `/describe` - Generate PR description. This will update the PR body or issue comment depending on your configuration\n> - `/help` - Get help with Mesa commands and configuration options\n> \n> </details>\n\n<sup>0 files reviewed | 1 comments | [Edit Agent Settings](https://wrangler.app.mesa.dev/rsnodgrass/agents) • [Read Docs](https://docs.mesa.dev/) <!--v:3.0 env:production--></sup>","commit_id":"16a20ebd18251de20f33593f57014acd742f5e98","state":"commented","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/20#pullrequestreview-4089442730","pull_request_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20","_links":{"html":{"href":"https://github.com/rsnodgrass/hass-xantech/pull/20#pullrequestreview-4089442730"},"pull_request":{"href":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20"}},"submitted_at":"2026-04-10T12:00:08Z","updated_at":"2026-04-10T12:00:08Z"},"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20","id":3513773968,"number":20,"head":{"ref":"sonance-fixes","sha":"16a20ebd18251de20f33593f57014acd742f5e98","repo":{"id":1205048306,"url":"https://api.github.com/repos/haklai/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"0cb03b139beb87d1483a1249de879454e76c0b19","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"action":"created"},"public":true,"created_at":"2026-04-10T12:00:09Z"},{"id":"8284028944","type":"PullRequestReviewEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"review":{"id":4089442730,"node_id":"PRR_kwDODgezOs7zv_Gq","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"Performed full review of **0cb03b1...16a20eb**\n### Analysis\n• Configuration constants are duplicated between the pyxantech library's device config and the HA integration's const.py, violating DRY principles and creating a maintenance burden when device specifications change.\n\n• Inconsistent data sourcing: Sonance6 ranges hardcode constants from const.py while other amp types query get_device_config(), creating a confusing asymmetry that should be unified.\n\n• Device-specific conditionals (amp_type == AMP_TYPE_SONANCE6) are scattered across multiple files without abstraction, leading to growing complexity as more non-standard amp types are added.\n\n• Volume range calculations and float-to-int conversions lack validation for edge cases like inverted min/max values and floating-point precision errors near boundaries.\n\n\n> [!TIP]\n> <details>\n> <summary>Help</summary>\n>\n> \n> **Slash Commands:**\n> - `/review` - Request a full code review\n> - `/review latest` - Review only changes since the last review\n> - `/describe` - Generate PR description. This will update the PR body or issue comment depending on your configuration\n> - `/help` - Get help with Mesa commands and configuration options\n> \n> </details>\n\n<sup>0 files reviewed | 1 comments | [Edit Agent Settings](https://wrangler.app.mesa.dev/rsnodgrass/agents) • [Read Docs](https://docs.mesa.dev/) <!--v:3.0 env:production--></sup>","commit_id":"16a20ebd18251de20f33593f57014acd742f5e98","state":"commented","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/20#pullrequestreview-4089442730","pull_request_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20","_links":{"html":{"href":"https://github.com/rsnodgrass/hass-xantech/pull/20#pullrequestreview-4089442730"},"pull_request":{"href":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20"}},"submitted_at":"2026-04-10T12:00:08Z","updated_at":"2026-04-10T12:00:08Z"},"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20","id":3513773968,"number":20,"head":{"ref":"sonance-fixes","sha":"16a20ebd18251de20f33593f57014acd742f5e98","repo":{"id":1205048306,"url":"https://api.github.com/repos/haklai/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"0cb03b139beb87d1483a1249de879454e76c0b19","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}},"action":"updated"},"public":true,"created_at":"2026-04-10T12:00:09Z"},{"id":"8284028198","type":"PullRequestReviewCommentEvent","actor":{"id":187716431,"login":"mesa-dot-dev[bot]","display_login":"mesa-dot-dev","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev[bot]","avatar_url":"https://avatars.githubusercontent.com/u/187716431?"},"repo":{"id":235385658,"name":"rsnodgrass/hass-xantech","url":"https://api.github.com/repos/rsnodgrass/hass-xantech"},"payload":{"action":"created","comment":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/comments/3064096131","pull_request_review_id":4089442730,"id":3064096131,"node_id":"PRRC_kwDODgezOs62omWD","diff_hunk":"@@ -237,7 +259,8 @@ async def async_mute_volume(self, mute: bool) -> None:\n \n     async def async_set_volume_level(self, volume: float) -> None:\n         \"\"\"Set volume level, range 0-1.0.\"\"\"\n-        amp_volume = int(volume * MAX_VOLUME)\n+        vol_range = self._max_volume - self._min_volume\n+        amp_volume = int(volume * vol_range) + self._min_volume","path":"custom_components/xantech/media_player.py","commit_id":"16a20ebd18251de20f33593f57014acd742f5e98","original_commit_id":"16a20ebd18251de20f33593f57014acd742f5e98","user":{"login":"mesa-dot-dev[bot]","id":187716431,"node_id":"BOT_kgDOCzBTTw","avatar_url":"https://avatars.githubusercontent.com/in/1050077?v=4","gravatar_id":"","url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D","html_url":"https://github.com/apps/mesa-dot-dev","followers_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/followers","following_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/repos","events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/mesa-dot-dev%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"body":"![Medium](https://mesa-production-uploadbucketbucket-hzumnccc.s3.us-east-1.amazonaws.com/commentLabels/medium-severity-v2.svg)\n\nThe volume calculation can produce values outside the valid range due to float rounding. For example, if user passes `volume=1.0`, `int(1.0 * 20) + 40 = 60`, but `int(0.9999999 * 20) + 40` could give 59. Consider adding `min(max(...), self._min_volume, self._max_volume)` clamping after the calculation to ensure the result is always in bounds.\n\n<a href=\"https://cursor.com/link/prompt?text=Task%3A+Address+review+feedback+left+on+GitHub.%0ARepository%3A+rsnodgrass%2Fhass-xantech%2320%0AFile%3A+custom_components%2Fxantech%2Fmedia_player.py%23L263%0AAction%3A+Open+this+file+location+in+your+editor%2C+inspect+the+highlighted+code%2C+and+resolve+the+issue+described+below.%0A%0AFeedback%3A%0AThe+volume+calculation+can+produce+values+outside+the+valid+range+due+to+float+rounding.+For+example%2C+if+user+passes+%60volume%3D1.0%60%2C+%60int%281.0+*+20%29+%2B+40+%3D+60%60%2C+but+%60int%280.9999999+*+20%29+%2B+40%60+could+give+59.+Consider+adding+%60min%28max%28...%29%2C+self._min_volume%2C+self._max_volume%29%60+clamping+after+the+calculation+to+ensure+the+result+is+always+in+bounds.\" target=\"_blank\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://mesa-production-uploadbucketbucket-hzumnccc.s3.us-east-1.amazonaws.com/commentLabels/cursor-dark.svg\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://mesa-production-uploadbucketbucket-hzumnccc.s3.us-east-1.amazonaws.com/commentLabels/cursor-light.svg\"><img alt=\"Fix in Cursor\" src=\"https://mesa-production-uploadbucketbucket-hzumnccc.s3.us-east-1.amazonaws.com/commentLabels/cursor-dark.svg\" align=\"absmiddle\"></picture></a>&nbsp;•&nbsp;<a href=\"https://wrangler.app.mesa.dev/fix?prompt=Task%3A+Address+review+feedback+left+on+GitHub.%0ARepository%3A+rsnodgrass%2Fhass-xantech%2320%0AFile%3A+custom_components%2Fxantech%2Fmedia_player.py%23L263%0AAction%3A+Open+this+file+location+in+your+editor%2C+inspect+the+highlighted+code%2C+and+resolve+the+issue+described+below.%0A%0AFeedback%3A%0AThe+volume+calculation+can+produce+values+outside+the+valid+range+due+to+float+rounding.+For+example%2C+if+user+passes+%60volume%3D1.0%60%2C+%60int%281.0+*+20%29+%2B+40+%3D+60%60%2C+but+%60int%280.9999999+*+20%29+%2B+40%60+could+give+59.+Consider+adding+%60min%28max%28...%29%2C+self._min_volume%2C+self._max_volume%29%60+clamping+after+the+calculation+to+ensure+the+result+is+always+in+bounds.&editor=cursor\" target=\"_blank\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://mesa-production-uploadbucketbucket-hzumnccc.s3.us-east-1.amazonaws.com/commentLabels/claude-darkmode.svg\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://mesa-production-uploadbucketbucket-hzumnccc.s3.us-east-1.amazonaws.com/commentLabels/claude-lightmode.svg\"><img alt=\"Fix in Claude\" src=\"https://mesa-production-uploadbucketbucket-hzumnccc.s3.us-east-1.amazonaws.com/commentLabels/claude-darkmode.svg\" align=\"absmiddle\"></picture></a>\n\n<details>\n<summary>Prompt for Agent</summary>\n\n```\nTask: Address review feedback left on GitHub.\nRepository: rsnodgrass/hass-xantech#20\nFile: custom_components/xantech/media_player.py#L263\nAction: Open this file location in your editor, inspect the highlighted code, and resolve the issue described below.\n\nFeedback:\nThe volume calculation can produce values outside the valid range due to float rounding. For example, if user passes `volume=1.0`, `int(1.0 * 20) + 40 = 60`, but `int(0.9999999 * 20) + 40` could give 59. Consider adding `min(max(...), self._min_volume, self._max_volume)` clamping after the calculation to ensure the result is always in bounds.\n```\n\n</details>","created_at":"2026-04-10T12:00:07Z","updated_at":"2026-04-10T12:00:08Z","html_url":"https://github.com/rsnodgrass/hass-xantech/pull/20#discussion_r3064096131","pull_request_url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20","_links":{"self":{"href":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/comments/3064096131"},"html":{"href":"https://github.com/rsnodgrass/hass-xantech/pull/20#discussion_r3064096131"},"pull_request":{"href":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20"}},"reactions":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/comments/3064096131/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"original_position":80,"position":80,"subject_type":"line"},"pull_request":{"url":"https://api.github.com/repos/rsnodgrass/hass-xantech/pulls/20","id":3513773968,"number":20,"head":{"ref":"sonance-fixes","sha":"16a20ebd18251de20f33593f57014acd742f5e98","repo":{"id":1205048306,"url":"https://api.github.com/repos/haklai/hass-xantech","name":"hass-xantech"}},"base":{"ref":"master","sha":"0cb03b139beb87d1483a1249de879454e76c0b19","repo":{"id":235385658,"url":"https://api.github.com/repos/rsnodgrass/hass-xantech","name":"hass-xantech"}}}},"public":true,"created_at":"2026-04-10T12:00:07Z"}]