Status for Dolphin Central
Recent events
2026-11-07T15:42:57.865495 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:42:55.924909 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:39:10.267164 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-07T15:39:09.895622 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-07T15:37:55.924559 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:37:54.286242 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:33:23.473091 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14993 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
2026-11-07T15:33:23.473019 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14992 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
2026-11-07T15:33:19.435430 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303T\ufeffwilight0\x03 edited pull request #14993: VideoCommon: Derive fog depth from clip space on Nouveau (\x0306master\x03...\x0306fix/nouveau-frag-coord-depth\x03): \x1f\x0302https://dolp.in/pr14993\x03\x1f', 'type': 'notification'}
2026-11-07T15:33:19.435178 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14993, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993', 'id': 5203145608, 'node_id': 'PR_kwDOALCn2M8AAAABNiGziA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14993', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14993.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14993.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993', 'number': 14993, 'state': 'open', 'locked': False, 'title': 'VideoCommon: Derive fog depth from clip space on Nouveau', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "## Depends on\n\n#14992 (`fix/nouveau-driver-detection`) — `DRIVER_NOUVEAU` previously never matched on modern Mesa, so the bug entry added here would never trigger without it. This PR is a single commit based on `master` and touches disjoint files, so it is inert (but harmless) until #14992 lands; please merge #14992 first.\n\n## Problem\n\nWith `FastDepthCalc` enabled, the fog/ztexture depth (`zCoord`) is derived from the hardware fragment depth (`rawpos.z`). On Nouveau (verified on Fermi/NVC3 with Mesa) that value is wrong in full game shaders, which saturates perspective fog across entire scenes:\n\n- Metal Gear Solid: The Twin Snakes — cargo dock renders as a solid dark-green wash (HUD/minimap unaffected)\n- Super Smash Bros. Melee — menus wash out, some characters/stages wrong\n- Super Mario Sunshine — Mario turns monochrome in goop\n\nDisabling `FastDepthCalc` avoids it by recomputing depth from clip space (the existing non-fast path), at a performance cost.\n\n## Fix\n\nAdd `BUG_BROKEN_FRAG_COORD_DEPTH` for `DRIVER_NOUVEAU` and route affected drivers through the same clip-space depth calculation already used when `FastDepthCalc` is off, including emitting the `clipPos` varying in the vertex/geometry/uber shader generators. Other drivers generate identical shaders to before; the new `ShaderHostConfig` bit also separates the shader cache, so stale binaries compiled with the old formula are not reused.\n\nNote on placement: the root cause may be in Nouveau's handling of `gl_FragCoord.z` in these shaders, but minimal GL repros (fog math, `gl_FragCoord.z` under clip control/reversed ranges, early fragment tests, dynamic sampler indexing) all pass on the same driver, so no Mesa-side defect could be isolated. This uses Dolphin's existing driver-workaround mechanism, gated to Nouveau only.\n\n## Testing\n\nGeForce GT 555M (NVC3), `FastDepthCalc = True`, cold shader cache, both stock Mesa 26.2.6 (Arch) and a locally patched Mesa:\n\n- Twin Snakes cargo dock and the preceding diving-suit cutscene: correct colours (previously dark-green wash)\n- Melee title/menus/characters: correct (previously washed/grey-blue)\n- One-variable isolation runs: original shader cache = broken, fresh cache = correct; forcing `early_fragment_tests` or toggling image-load-store paths made no difference once the cache was cold\n", 'created_at': '2026-11-07T15:32:48Z', 'updated_at': '2026-11-07T15:33:16Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '3352b2a735a89dac5f28b887ee7dec6cd52013fb', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'head': {'label': 'Twilight0:fix/nouveau-frag-coord-depth', 'ref': 'fix/nouveau-frag-coord-depth', 'sha': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1449487110, 'node_id': 'R_kgDOVmVrBg', 'name': 'dolphin', 'full_name': 'Twilight0/dolphin', 'private': False, 'owner': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Twilight0/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/Twilight0/dolphin', 'forks_url': 'https://api.github.com/repos/Twilight0/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Twilight0/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Twilight0/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Twilight0/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Twilight0/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Twilight0/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Twilight0/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Twilight0/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Twilight0/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Twilight0/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Twilight0/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Twilight0/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Twilight0/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Twilight0/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Twilight0/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Twilight0/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Twilight0/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Twilight0/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Twilight0/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Twilight0/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Twilight0/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Twilight0/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Twilight0/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Twilight0/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Twilight0/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Twilight0/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Twilight0/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Twilight0/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Twilight0/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Twilight0/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Twilight0/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Twilight0/dolphin/deployments', 'created_at': '2026-11-07T15:32:24Z', 'updated_at': '2026-11-07T15:32:24Z', 'pushed_at': '2026-11-07T15:32:32Z', 'git_url': 'git://github.com/Twilight0/dolphin.git', 'ssh_url': 'git@github.com:Twilight0/dolphin.git', 'clone_url': 'https://github.com/Twilight0/dolphin.git', 'svn_url': 'https://github.com/Twilight0/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14993'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 35, 'deletions': 17, 'changed_files': 8}, 'changes': {'body': {'from': "## Depends on\n\n#14992 (`fix/nouveau-driver-detection`) — `DRIVER_NOUVEAU` previously never matched on modern Mesa, so the bug entry added here would never trigger without it. This branch is stacked on that one; only the last commit is new.\n\n## Problem\n\nWith `FastDepthCalc` enabled, the fog/ztexture depth (`zCoord`) is derived from the hardware fragment depth (`rawpos.z`). On Nouveau (verified on Fermi/NVC3 with Mesa) that value is wrong in full game shaders, which saturates perspective fog across entire scenes:\n\n- Metal Gear Solid: The Twin Snakes — cargo dock renders as a solid dark-green wash (HUD/minimap unaffected)\n- Super Smash Bros. Melee — menus wash out, some characters/stages wrong\n- Super Mario Sunshine — Mario turns monochrome in goop\n\nDisabling `FastDepthCalc` avoids it by recomputing depth from clip space (the existing non-fast path), at a performance cost.\n\n## Fix\n\nAdd `BUG_BROKEN_FRAG_COORD_DEPTH` for `DRIVER_NOUVEAU` and route affected drivers through the same clip-space depth calculation already used when `FastDepthCalc` is off, including emitting the `clipPos` varying in the vertex/geometry/uber shader generators. Other drivers generate identical shaders to before; the new `ShaderHostConfig` bit also separates the shader cache, so stale binaries compiled with the old formula are not reused.\n\nNote on placement: the root cause may be in Nouveau's handling of `gl_FragCoord.z` in these shaders, but minimal GL repros (fog math, `gl_FragCoord.z` under clip control/reversed ranges, early fragment tests, dynamic sampler indexing) all pass on the same driver, so no Mesa-side defect could be isolated. This uses Dolphin's existing driver-workaround mechanism, gated to Nouveau only.\n\n## Testing\n\nGeForce GT 555M (NVC3), `FastDepthCalc = True`, cold shader cache, both stock Mesa 26.2.6 (Arch) and a locally patched Mesa:\n\n- Twin Snakes cargo dock and the preceding diving-suit cutscene: correct colours (previously dark-green wash)\n- Melee title/menus/characters: correct (previously washed/grey-blue)\n- One-variable isolation runs: original shader cache = broken, fresh cache = correct; forcing `early_fragment_tests` or toggling image-load-store paths made no difference once the cache was cold"}}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:33:19.435166 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Twilight0', 'action': 'edited', 'id': 14993, 'title': 'VideoCommon: Derive fog depth from clip space on Nouveau', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14993', 'head_ref_name': 'fix/nouveau-frag-coord-depth', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T15:32:54.285819 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:32:53.472706 {'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'shortrev': '33a9f4', 'service': 'default', 'pr': 14993, 'success': False, 'pending': False, 'url': '', 'description': 'PR not built because Twilight0 is not auto-trusted.', 'type': 'build_status'}
2026-11-07T15:32:52.722847 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:32:52.713127 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/buildbot.py', 'lineno': 131, 'msg': 'PR %s mergeable: %s (%s)', 'args': "(14993, True, 'clean')", 'type': 'internal_log'}
2026-11-07T15:32:52.348276 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303T\ufeffwilight0\x03 opened pull request #14993: VideoCommon: Derive fog depth from clip space on Nouveau (\x0306master\x03...\x0306fix/nouveau-frag-coord-depth\x03): \x1f\x0302https://dolp.in/pr14993\x03\x1f', 'type': 'notification'}
2026-11-07T15:32:52.347392 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 14993, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993', 'id': 5203145608, 'node_id': 'PR_kwDOALCn2M8AAAABNiGziA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14993', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14993.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14993.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993', 'number': 14993, 'state': 'open', 'locked': False, 'title': 'VideoCommon: Derive fog depth from clip space on Nouveau', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "## Depends on\n\n#14992 (`fix/nouveau-driver-detection`) — `DRIVER_NOUVEAU` previously never matched on modern Mesa, so the bug entry added here would never trigger without it. This branch is stacked on that one; only the last commit is new.\n\n## Problem\n\nWith `FastDepthCalc` enabled, the fog/ztexture depth (`zCoord`) is derived from the hardware fragment depth (`rawpos.z`). On Nouveau (verified on Fermi/NVC3 with Mesa) that value is wrong in full game shaders, which saturates perspective fog across entire scenes:\n\n- Metal Gear Solid: The Twin Snakes — cargo dock renders as a solid dark-green wash (HUD/minimap unaffected)\n- Super Smash Bros. Melee — menus wash out, some characters/stages wrong\n- Super Mario Sunshine — Mario turns monochrome in goop\n\nDisabling `FastDepthCalc` avoids it by recomputing depth from clip space (the existing non-fast path), at a performance cost.\n\n## Fix\n\nAdd `BUG_BROKEN_FRAG_COORD_DEPTH` for `DRIVER_NOUVEAU` and route affected drivers through the same clip-space depth calculation already used when `FastDepthCalc` is off, including emitting the `clipPos` varying in the vertex/geometry/uber shader generators. Other drivers generate identical shaders to before; the new `ShaderHostConfig` bit also separates the shader cache, so stale binaries compiled with the old formula are not reused.\n\nNote on placement: the root cause may be in Nouveau's handling of `gl_FragCoord.z` in these shaders, but minimal GL repros (fog math, `gl_FragCoord.z` under clip control/reversed ranges, early fragment tests, dynamic sampler indexing) all pass on the same driver, so no Mesa-side defect could be isolated. This uses Dolphin's existing driver-workaround mechanism, gated to Nouveau only.\n\n## Testing\n\nGeForce GT 555M (NVC3), `FastDepthCalc = True`, cold shader cache, both stock Mesa 26.2.6 (Arch) and a locally patched Mesa:\n\n- Twin Snakes cargo dock and the preceding diving-suit cutscene: correct colours (previously dark-green wash)\n- Melee title/menus/characters: correct (previously washed/grey-blue)\n- One-variable isolation runs: original shader cache = broken, fresh cache = correct; forcing `early_fragment_tests` or toggling image-load-store paths made no difference once the cache was cold", 'created_at': '2026-11-07T15:32:48Z', 'updated_at': '2026-11-07T15:32:48Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'head': {'label': 'Twilight0:fix/nouveau-frag-coord-depth', 'ref': 'fix/nouveau-frag-coord-depth', 'sha': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1449487110, 'node_id': 'R_kgDOVmVrBg', 'name': 'dolphin', 'full_name': 'Twilight0/dolphin', 'private': False, 'owner': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Twilight0/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/Twilight0/dolphin', 'forks_url': 'https://api.github.com/repos/Twilight0/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Twilight0/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Twilight0/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Twilight0/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Twilight0/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Twilight0/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Twilight0/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Twilight0/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Twilight0/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Twilight0/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Twilight0/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Twilight0/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Twilight0/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Twilight0/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Twilight0/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Twilight0/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Twilight0/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Twilight0/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Twilight0/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Twilight0/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Twilight0/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Twilight0/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Twilight0/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Twilight0/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Twilight0/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Twilight0/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Twilight0/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Twilight0/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Twilight0/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Twilight0/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Twilight0/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Twilight0/dolphin/deployments', 'created_at': '2026-11-07T15:32:24Z', 'updated_at': '2026-11-07T15:32:24Z', 'pushed_at': '2026-11-07T15:32:32Z', 'git_url': 'git://github.com/Twilight0/dolphin.git', 'ssh_url': 'git@github.com:Twilight0/dolphin.git', 'clone_url': 'https://github.com/Twilight0/dolphin.git', 'svn_url': 'https://github.com/Twilight0/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14993'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 35, 'deletions': 17, 'changed_files': 8}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:32:52.347381 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Twilight0', 'action': 'opened', 'id': 14993, 'title': 'VideoCommon: Derive fog depth from clip space on Nouveau', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14993', 'head_ref_name': 'fix/nouveau-frag-coord-depth', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T15:32:44.074903 {'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': '494c39e23055617e2789df8c0a031bad6e307344', 'shortrev': '494c39', 'service': 'default', 'pr': 14992, 'success': False, 'pending': False, 'url': '', 'description': 'PR not built because Twilight0 is not auto-trusted.', 'type': 'build_status'}
2026-11-07T15:32:43.354420 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/buildbot.py', 'lineno': 131, 'msg': 'PR %s mergeable: %s (%s)', 'args': "(14992, True, 'clean')", 'type': 'internal_log'}
2026-11-07T15:32:42.956096 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303T\ufeffwilight0\x03 opened pull request #14992: OGL: Fix Nouveau driver detection on modern Mesa (\x0306master\x03...\x0306fix/nouveau-driver-detection\x03): \x1f\x0302https://dolp.in/pr14992\x03\x1f', 'type': 'notification'}
2026-11-07T15:32:42.955796 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 14992, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992', 'id': 5203144391, 'node_id': 'PR_kwDOALCn2M8AAAABNiGuxw', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14992', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14992.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14992.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14992', 'number': 14992, 'state': 'open', 'locked': False, 'title': 'OGL: Fix Nouveau driver detection on modern Mesa', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': '## Problem\n\n`InitDriverInfo()` in `OGLConfig.cpp` only recognised Nouveau when `GL_VENDOR` was the literal string `"nouveau"`. Modern Mesa reports `GL_VENDOR` as `"Mesa"` with the GPU codename (e.g. `NVC3`) in `GL_RENDERER`, so `DRIVER_NOUVEAU` never matched and no Nouveau `DriverDetails` bug entry ever applied.\n\n## Fix\n\nIdentify Nouveau from the renderer string instead: it either contains `"nouveau"` (older Gallium strings) or starts with the `NV` chip codename prefix.\n\nThis is a small, self-contained correction; it only affects which driver is recorded for Mesa/Nouveau systems. Verified on GeForce GT 555M (NVC3) with Mesa 26.2.6, where `DRIVER_NOUVEAU` now matches.', 'created_at': '2026-11-07T15:32:39Z', 'updated_at': '2026-11-07T15:32:39Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14992/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/494c39e23055617e2789df8c0a031bad6e307344', 'head': {'label': 'Twilight0:fix/nouveau-driver-detection', 'ref': 'fix/nouveau-driver-detection', 'sha': '494c39e23055617e2789df8c0a031bad6e307344', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1449487110, 'node_id': 'R_kgDOVmVrBg', 'name': 'dolphin', 'full_name': 'Twilight0/dolphin', 'private': False, 'owner': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Twilight0/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/Twilight0/dolphin', 'forks_url': 'https://api.github.com/repos/Twilight0/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Twilight0/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Twilight0/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Twilight0/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Twilight0/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Twilight0/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Twilight0/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Twilight0/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Twilight0/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Twilight0/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Twilight0/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Twilight0/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Twilight0/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Twilight0/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Twilight0/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Twilight0/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Twilight0/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Twilight0/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Twilight0/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Twilight0/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Twilight0/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Twilight0/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Twilight0/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Twilight0/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Twilight0/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Twilight0/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Twilight0/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Twilight0/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Twilight0/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Twilight0/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Twilight0/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Twilight0/dolphin/deployments', 'created_at': '2026-11-07T15:32:24Z', 'updated_at': '2026-11-07T15:32:24Z', 'pushed_at': '2026-11-07T15:32:32Z', 'git_url': 'git://github.com/Twilight0/dolphin.git', 'ssh_url': 'git@github.com:Twilight0/dolphin.git', 'clone_url': 'https://github.com/Twilight0/dolphin.git', 'svn_url': 'https://github.com/Twilight0/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 483, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 483, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14992'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14992'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14992/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/494c39e23055617e2789df8c0a031bad6e307344'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 5, 'deletions': 1, 'changed_files': 1}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 483, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 483, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:32:42.955786 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Twilight0', 'action': 'opened', 'id': 14992, 'title': 'OGL: Fix Nouveau driver detection on modern Mesa', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14992', 'head_ref_name': 'fix/nouveau-driver-detection', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '494c39e23055617e2789df8c0a031bad6e307344', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T15:29:09.895342 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-07T15:29:09.575107 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
Recent 'build_status' events
2026-11-07T15:32:53.472706 {'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'shortrev': '33a9f4', 'service': 'default', 'pr': 14993, 'success': False, 'pending': False, 'url': '', 'description': 'PR not built because Twilight0 is not auto-trusted.', 'type': 'build_status'}
2026-11-07T15:32:44.074903 {'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': '494c39e23055617e2789df8c0a031bad6e307344', 'shortrev': '494c39', 'service': 'default', 'pr': 14992, 'success': False, 'pending': False, 'url': '', 'description': 'PR not built because Twilight0 is not auto-trusted.', 'type': 'build_status'}
2026-11-07T12:25:11.813526 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-deb-dbg-x64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/1/builds/10961', 'description': 'Build succeeded on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-11-07T12:23:22.394419 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-win-dbg-x64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/31/builds/10970', 'description': 'Build succeeded on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-11-07T12:12:58.372037 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-win-dbg-x64', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/31/builds/10970', 'description': 'Auto build in progress on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-11-07T12:12:57.658377 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-win-x64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/2/builds/10963', 'description': 'Build succeeded on builder pr-win-x64', 'type': 'build_status'}
2026-11-07T12:07:51.234599 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-android', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/22/builds/10968', 'description': 'Build succeeded on builder pr-android', 'type': 'build_status'}
2026-11-07T12:07:07.554896 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-deb-dbg-x64', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/1/builds/10961', 'description': 'Auto build in progress on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-11-07T12:07:06.881611 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-deb-x64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/26/builds/10960', 'description': 'Build succeeded on builder pr-deb-x64', 'type': 'build_status'}
2026-11-07T12:06:29.589975 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-appimage-x64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/49/builds/214', 'description': 'Build succeeded on builder pr-appimage-x64', 'type': 'build_status'}
2026-11-07T12:05:41.292083 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-ubu-x64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/27/builds/10962', 'description': 'Build succeeded on builder pr-ubu-x64', 'type': 'build_status'}
2026-11-07T12:01:18.639792 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-appimage-arm64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/50/builds/208', 'description': 'Build succeeded on builder pr-appimage-arm64', 'type': 'build_status'}
2026-11-07T12:01:06.649393 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-win-x64', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/2/builds/10963', 'description': 'Auto build in progress on builder pr-win-x64', 'type': 'build_status'}
2026-11-07T12:01:05.927770 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-win-arm64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/13/builds/10962', 'description': 'Build succeeded on builder pr-win-arm64', 'type': 'build_status'}
2026-11-07T11:58:24.448493 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-flatpak-x64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/43/builds/6110', 'description': 'Build succeeded on builder pr-flatpak-x64', 'type': 'build_status'}
2026-11-07T11:57:48.044671 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-flatpak-arm64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/44/builds/6050', 'description': 'Build succeeded on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-11-07T11:55:13.677440 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-osx-universal', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/7/builds/10981', 'description': 'Build succeeded on builder pr-osx-universal', 'type': 'build_status'}
2026-11-07T11:47:23.868081 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-freebsd-x64', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/11/builds/10972', 'description': 'Build succeeded on builder pr-freebsd-x64', 'type': 'build_status'}
2026-11-07T11:42:33.667980 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-flatpak-x64', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/43/builds/6110', 'description': 'Auto build in progress on builder pr-flatpak-x64', 'type': 'build_status'}
2026-11-07T11:42:33.023635 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-flatpak-arm64', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/44/builds/6050', 'description': 'Auto build in progress on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-11-07T11:42:31.137500 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-ubu-x64', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/27/builds/10962', 'description': 'Auto build in progress on builder pr-ubu-x64', 'type': 'build_status'}
2026-11-07T11:42:30.406227 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'lint', 'pr': 14962, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/9/builds/10965', 'description': 'Build succeeded on builder lint', 'type': 'build_status'}
2026-11-07T11:42:27.095031 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-osx-universal', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/7/builds/10981', 'description': 'Auto build in progress on builder pr-osx-universal', 'type': 'build_status'}
2026-11-07T11:42:26.392573 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-win-arm64', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/13/builds/10962', 'description': 'Auto build in progress on builder pr-win-arm64', 'type': 'build_status'}
2026-11-07T11:42:25.725903 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'shortrev': 'c6c1c4', 'service': 'pr-android', 'pr': 14962, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/22/builds/10968', 'description': 'Auto build in progress on builder pr-android', 'type': 'build_status'}
Recent 'command_message' events
2026-11-07T11:42:07.230448 {'source': 'discord', 'who': 'joshuavandaele', 'what': '<@1320924779556900984> Pretty please rebuild PR 14962', 'type': 'command_message'}
2026-11-07T02:23:22.588094 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> pretty please rebuild PR 14991 ?', 'type': 'command_message'}
2026-11-07T02:06:26.676187 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14991', 'type': 'command_message'}
2026-11-05T22:53:56.434658 {'source': 'ircclient', 'who': 'AdmiralCurtiss', 'what': 'irrawaddy rebuild 14923', 'type': 'command_message'}
2026-11-05T22:52:43.613910 {'source': 'ircclient', 'who': 'AdmiralCurtiss', 'what': 'irrawaddy rebuild 14968', 'type': 'command_message'}
2026-11-05T22:50:16.805035 {'source': 'ircclient', 'who': 'AdmiralCurtiss', 'what': 'irrawaddy rebuild 14924', 'type': 'command_message'}
2026-11-05T01:40:57.598915 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14985', 'type': 'command_message'}
2026-11-03T04:33:32.849720 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14976', 'type': 'command_message'}
2026-11-03T00:54:46.597895 {'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14974', 'type': 'command_message'}
2026-11-03T00:54:40.466839 {'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14973', 'type': 'command_message'}
2026-11-03T00:54:34.946966 {'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14971', 'type': 'command_message'}
2026-11-03T00:54:29.214769 {'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14970', 'type': 'command_message'}
2026-11-03T00:54:22.253871 {'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14968', 'type': 'command_message'}
2026-11-03T00:54:17.087271 {'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14969', 'type': 'command_message'}
2026-11-03T00:48:44.202589 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14923', 'type': 'command_message'}
2026-11-02T23:13:58.810667 {'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14972', 'type': 'command_message'}
2026-11-02T17:11:49.601973 {'source': 'discord', 'who': 'josjuice', 'what': '<@1320924779556900984> please rebuild 14962', 'type': 'command_message'}
2026-11-02T01:43:57.146928 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14969', 'type': 'command_message'}
2026-11-02T01:38:36.056172 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14968', 'type': 'command_message'}
Recent 'dev_wark' events
2026-11-07T02:23:22.588119 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-07T02:06:26.676211 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-05T22:53:56.434698 {'source': 'ircclient', 'accepted': True, 'type': 'dev_wark'}
2026-11-05T22:52:43.613954 {'source': 'ircclient', 'accepted': True, 'type': 'dev_wark'}
2026-11-05T22:50:16.805063 {'source': 'ircclient', 'accepted': True, 'type': 'dev_wark'}
2026-11-05T01:40:57.598944 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-03T04:33:32.849747 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-03T00:48:44.202673 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-02T01:43:57.146980 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-02T01:38:36.056200 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
Recent 'gh_issue_comment' events
2026-11-07T15:26:54.665552 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'infirit', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'safe_author': False, 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies. Haven't tried the flatpak but it may also be missing the dep.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'raw': {'action': 'edited', 'changes': {'body': {'from': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies. Haven't tried the flatpak but I suspect it will have a similar missing dep.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: "}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 29, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T15:18:51Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6708769494, 'node_id': 'IC_kwDOALCn2M8AAAABj9-y1g', 'user': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T15:11:18Z', 'updated_at': '2026-11-07T15:26:53Z', 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies. Haven't tried the flatpak but it may also be missing the dep.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T14:45:28Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-07T15:18:52.736949 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'infirit', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'safe_author': False, 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies. Haven't tried the flatpak but I suspect it will have a similar missing dep.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'raw': {'action': 'edited', 'changes': {'body': {'from': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: "}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 29, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T15:17:26Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6708769494, 'node_id': 'IC_kwDOALCn2M8AAAABj9-y1g', 'user': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T15:11:18Z', 'updated_at': '2026-11-07T15:18:51Z', 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies. Haven't tried the flatpak but I suspect it will have a similar missing dep.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T14:45:28Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-07T15:17:27.582226 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'infirit', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'safe_author': False, 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'raw': {'action': 'edited', 'changes': {'body': {'from': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: "}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 29, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T15:11:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6708769494, 'node_id': 'IC_kwDOALCn2M8AAAABj9-y1g', 'user': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T15:11:18Z', 'updated_at': '2026-11-07T15:17:26Z', 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T14:45:28Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-07T15:11:20.812906 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'infirit', 'action': 'created', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'safe_author': False, 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 29, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T15:11:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6708769494, 'node_id': 'IC_kwDOALCn2M8AAAABj9-y1g', 'user': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T15:11:18Z', 'updated_at': '2026-11-07T15:11:18Z', 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T14:45:28Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-07T06:17:18.265611 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Tilka', 'action': 'created', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6703268470', 'safe_author': True, 'body': 'Did you report this to Mesa developers? Does it affect more than one user? I\'d rather not add scare warnings for something that could just be failing hardware or could get fixed in the next driver release. So far, I\'d call this an anecdote rather than "evidence".', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991', 'id': 6253640354, 'node_id': 'PR_kwDOALCn2M8AAAABNcZGmQ', 'number': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'user': {'login': 'jpferraz-git', 'id': 179407958, 'node_id': 'U_kgDOCrGMVg', 'avatar_url': 'https://avatars.githubusercontent.com/u/179407958?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jpferraz-git', 'html_url': 'https://github.com/jpferraz-git', 'followers_url': 'https://api.github.com/users/jpferraz-git/followers', 'following_url': 'https://api.github.com/users/jpferraz-git/following{/other_user}', 'gists_url': 'https://api.github.com/users/jpferraz-git/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jpferraz-git/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jpferraz-git/subscriptions', 'organizations_url': 'https://api.github.com/users/jpferraz-git/orgs', 'repos_url': 'https://api.github.com/users/jpferraz-git/repos', 'events_url': 'https://api.github.com/users/jpferraz-git/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jpferraz-git/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-07T06:17:16Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14991', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14991.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14991.patch', 'merged_at': None}, 'body': 'When running Dolphin on Linux systems with Intel Integrated Graphics (Tiger Lake / Iris Xe using Mesa `iris`), using the OpenGL backend frequently leads to kernel GPU hangs (`i915` ring timeouts) during heavy EFB / shader workloads (such as in *Super Mario Galaxy* and *Skyward Sword*). Under Wayland compositors (GNOME Mutter / KDE KWin), this GPU reset causes an unrecoverable display freeze.\r\n\r\nWhile PR #14835 changed the default backend to Vulkan on Linux for clean installs, existing installations with an already generated `Dolphin.ini` keep `GFXBackend = OGL` and remain prone to these system freezes.\r\n\r\nThis patch adds an on-screen warning (OSD) in `PopulateConfig()` when `gl_vendor == "Intel"` and Mesa are detected on Linux under OpenGL, advising users to switch to Vulkan.\r\n\r\n### Evidence\r\n\r\n**System Environment:**\r\n- **OS:** Ubuntu Linux (Wayland / GNOME Mutter)\r\n- **GPU:** Intel Iris Xe Graphics (Tiger Lake GT2, `i915` kernel module)\r\n- **Mesa:** `iris` OpenGL driver (vendor string: `"Intel"`)\r\n\r\n**Kernel log signature during freeze (`dmesg` / `journalctl -k`):**\r\n```text\r\nkernel: i915 0000:00:02.0: [drm] GPU HANG: ecode 12:0:00000000, in dolphin-emu\r\nkernel: i915 0000:00:02.0: [drm] Resetting rcs0 for stopped heartbeat on rcs0\r\nkernel: [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:...] flip_done timed out\r\n```\r\nOnce the `i915` reset sequence finishes, the Wayland compositor permanently loses display synchronization (`Pageflip timed out`), locking up all screen updates and requiring a forced hard reboot.\r\n\r\n*(Note per Contributing.md: The author drafted and refined this patch and PR description with LLM assistance.)*', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991/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/dolphin-emu/dolphin/issues/14991/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6703268470', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6703268470', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6703268470, 'node_id': 'IC_kwDOALCn2M8AAAABj4vCdg', 'user': {'login': 'Tilka', 'id': 123798, 'node_id': 'MDQ6VXNlcjEyMzc5OA==', 'avatar_url': 'https://avatars.githubusercontent.com/u/123798?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Tilka', 'html_url': 'https://github.com/Tilka', 'followers_url': 'https://api.github.com/users/Tilka/followers', 'following_url': 'https://api.github.com/users/Tilka/following{/other_user}', 'gists_url': 'https://api.github.com/users/Tilka/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Tilka/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Tilka/subscriptions', 'organizations_url': 'https://api.github.com/users/Tilka/orgs', 'repos_url': 'https://api.github.com/users/Tilka/repos', 'events_url': 'https://api.github.com/users/Tilka/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Tilka/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T06:17:16Z', 'updated_at': '2026-11-07T06:17:16Z', 'body': 'Did you report this to Mesa developers? Does it affect more than one user? I\'d rather not add scare warnings for something that could just be failing hardware or could get fixed in the next driver release. So far, I\'d call this an anecdote rather than "evidence".', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6703268470/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'Tilka', 'id': 123798, 'node_id': 'MDQ6VXNlcjEyMzc5OA==', 'avatar_url': 'https://avatars.githubusercontent.com/u/123798?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Tilka', 'html_url': 'https://github.com/Tilka', 'followers_url': 'https://api.github.com/users/Tilka/followers', 'following_url': 'https://api.github.com/users/Tilka/following{/other_user}', 'gists_url': 'https://api.github.com/users/Tilka/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Tilka/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Tilka/subscriptions', 'organizations_url': 'https://api.github.com/users/Tilka/orgs', 'repos_url': 'https://api.github.com/users/Tilka/repos', 'events_url': 'https://api.github.com/users/Tilka/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Tilka/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-07T03:31:07.889570 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'created', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6701679169', 'safe_author': False, 'body': 'Rebased with the review feedback folded into the relevant commits.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 28, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:31:05Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6701679169', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6701679169', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6701679169, 'node_id': 'IC_kwDOALCn2M8AAAABj3OCQQ', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T03:31:05Z', 'updated_at': '2026-11-07T03:31:05Z', 'body': 'Rebased with the review feedback folded into the relevant commits.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6701679169/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T22:25:17.838878 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'created', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6697360996', 'safe_author': False, 'body': '> Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n> \r\n> A bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n> \r\n> ```\r\n> [2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n> [2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n> [2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n> [2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n> [2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n> [2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n> [2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n> [2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n> [2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n> [2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n> [2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n> [2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n> [2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n> [2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n> [2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n> [2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n> [2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n> [2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n> [2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n> [2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n> ```\r\n> \r\n> I will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n> \r\n> Edit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too! I could play the game for thee hours in a row without any issue to report back. :)\r\n> \r\n> I’ve now reported an issue to weston: https://gitlab.freedesktop.org/wayland/weston/-/work_items/1155\r\n\r\nAwesome!! thank you for your help with this and testing the branch out :D', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 27, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-06T22:25:16Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6697360996', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6697360996', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6697360996, 'node_id': 'IC_kwDOALCn2M8AAAABjzGeZA', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T22:25:16Z', 'updated_at': '2026-11-06T22:25:16Z', 'body': '> Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n> \r\n> A bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n> \r\n> ```\r\n> [2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n> [2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n> [2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n> [2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n> [2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n> [2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n> [2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n> [2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n> [2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n> [2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n> [2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n> [2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n> [2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n> [2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n> [2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n> [2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n> [2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n> [2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n> [2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n> [2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n> ```\r\n> \r\n> I will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n> \r\n> Edit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too! I could play the game for thee hours in a row without any issue to report back. :)\r\n> \r\n> I’ve now reported an issue to weston: https://gitlab.freedesktop.org/wayland/weston/-/work_items/1155\r\n\r\nAwesome!! thank you for your help with this and testing the branch out :D', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6697360996/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-06T19:41:40Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15774, 'watchers_count': 15774, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3380, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3380, 'open_issues': 480, 'watchers': 15774, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T17:58:30.877254 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'created', 'id': 14989, 'title': 'DSPHLE/Zelda: Keep sync mails that arrive before MAIL_CONTINUE', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14989#issuecomment-6691723057', 'safe_author': True, 'body': 'AI usage is forbidden for this part of the codebase.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14989', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14989/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14989/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14989/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14989', 'id': 6247887709, 'node_id': 'PR_kwDOALCn2M8AAAABNXvVLg', 'number': 14989, 'title': 'DSPHLE/Zelda: Keep sync mails that arrive before MAIL_CONTINUE', 'user': {'login': 'Zontex', 'id': 19342533, 'node_id': 'MDQ6VXNlcjE5MzQyNTMz', 'avatar_url': 'https://avatars.githubusercontent.com/u/19342533?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Zontex', 'html_url': 'https://github.com/Zontex', 'followers_url': 'https://api.github.com/users/Zontex/followers', 'following_url': 'https://api.github.com/users/Zontex/following{/other_user}', 'gists_url': 'https://api.github.com/users/Zontex/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Zontex/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Zontex/subscriptions', 'organizations_url': 'https://api.github.com/users/Zontex/orgs', 'repos_url': 'https://api.github.com/users/Zontex/repos', 'events_url': 'https://api.github.com/users/Zontex/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Zontex/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-11-06T17:55:04Z', 'updated_at': '2026-11-06T17:58:28Z', 'closed_at': '2026-11-06T17:58:28Z', 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14989', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14989', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14989.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14989.patch', 'merged_at': None}, 'body': 'A game that falls behind can send its next rendering command (02), and the sync mails for that command\'s first frame, after the last frame\'s acknowledgment but before it has answered `DONE_RENDERING` with `MAIL_CONTINUE`. The real uCode keeps those sync mails and uses them when the queued command runs. The HLE treats them as "Sync mail received when rendering was not active" and halts, which silences the game for the rest of the session.\n\nThe change: in `WAITING`, a sync mail while a command is queued and execution is blocked waiting for the ACK goes to `RENDERING` as usual. In `RENDERING`, the flags are stored but `RenderAudio()` is only called when rendering is actually in progress. A sync mail with nothing queued still halts.\n\nIt also numbers the per-frame acknowledgments from 1, as the uCode does (`F355FF01` to `F355FF07` for a 7-frame render). The HLE sent them from 0.\n\n**How it was found.** This turned up in [wii-recomp](https://github.com/Zontex/wii-recomp), a static recompiler for Wii games, whose Zelda HLE is a C port of Dolphin\'s. Super Mario Galaxy 2 went silent for good about 75 seconds into a walk, as Mario first walks into the Star Festival. Running the real uCode on a DSP interpreter over the same walk showed it receiving sync mails before "continue" about 900 times and rendering normally each time. With the same change in the C port, a 240-second walk has sound the whole way.\n\n**Not included.** Under the interpreter, the uCode also sends `DONE_RENDERING` about 4,600–5,400 ticks after the last frame\'s acknowledgment rather than straight after it. That changes how often the game falls behind in the first place. Doing it here would need `CMailHandler` to delay a mail, not just its interrupt, so it\'s left for a separate change.\n\n**Testing.** I haven\'t built or run this Dolphin patch. It\'s a port of the change above. Super Mario Galaxy 2 with DSP HLE, playing until the Star Festival, should show it (look for the "Halting" notice in the DSPHLE log).\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14989/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/dolphin-emu/dolphin/issues/14989/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6691723057', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14989#issuecomment-6691723057', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14989', 'id': 6691723057, 'node_id': 'IC_kwDOALCn2M8AAAABjtuXMQ', 'user': {'login': 'JosJuice', 'id': 6716818, 'node_id': 'MDQ6VXNlcjY3MTY4MTg=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6716818?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JosJuice', 'html_url': 'https://github.com/JosJuice', 'followers_url': 'https://api.github.com/users/JosJuice/followers', 'following_url': 'https://api.github.com/users/JosJuice/following{/other_user}', 'gists_url': 'https://api.github.com/users/JosJuice/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JosJuice/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JosJuice/subscriptions', 'organizations_url': 'https://api.github.com/users/JosJuice/orgs', 'repos_url': 'https://api.github.com/users/JosJuice/repos', 'events_url': 'https://api.github.com/users/JosJuice/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JosJuice/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T17:58:28Z', 'updated_at': '2026-11-06T17:58:28Z', 'body': 'AI usage is forbidden for this part of the codebase.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6691723057/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-06T16:47:36Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15771, 'watchers_count': 15771, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 480, 'watchers': 15771, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'JosJuice', 'id': 6716818, 'node_id': 'MDQ6VXNlcjY3MTY4MTg=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6716818?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JosJuice', 'html_url': 'https://github.com/JosJuice', 'followers_url': 'https://api.github.com/users/JosJuice/followers', 'following_url': 'https://api.github.com/users/JosJuice/following{/other_user}', 'gists_url': 'https://api.github.com/users/JosJuice/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JosJuice/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JosJuice/subscriptions', 'organizations_url': 'https://api.github.com/users/JosJuice/orgs', 'repos_url': 'https://api.github.com/users/JosJuice/repos', 'events_url': 'https://api.github.com/users/JosJuice/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JosJuice/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T14:07:54.937186 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6682347324', 'safe_author': True, 'body': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n\r\nEdit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too! I could play the game for thee hours in a row without any issue to report back. :)\r\n\r\nI’ve now reported an issue to weston: https://gitlab.freedesktop.org/wayland/weston/-/work_items/1155', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n\r\nEdit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too! I could play the game for thee hours in a row without any issue to report back. :)'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 26, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-06T13:57:11Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6682347324', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6682347324', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6682347324, 'node_id': 'IC_kwDOALCn2M8AAAABjkyHPA', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T10:07:26Z', 'updated_at': '2026-11-06T14:07:53Z', 'body': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n\r\nEdit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too! I could play the game for thee hours in a row without any issue to report back. :)\r\n\r\nI’ve now reported an issue to weston: https://gitlab.freedesktop.org/wayland/weston/-/work_items/1155', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6682347324/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-06T13:04:52Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3379, 'open_issues': 480, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T13:57:13.312155 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6682347324', 'safe_author': True, 'body': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n\r\nEdit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too! I could play the game for thee hours in a row without any issue to report back. :)', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n\r\nEdit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too!'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 26, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-06T10:11:31Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6682347324', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6682347324', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6682347324, 'node_id': 'IC_kwDOALCn2M8AAAABjkyHPA', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T10:07:26Z', 'updated_at': '2026-11-06T13:57:11Z', 'body': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n\r\nEdit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too! I could play the game for thee hours in a row without any issue to report back. :)', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6682347324/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-06T13:04:52Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 480, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T10:11:32.711951 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6682347324', 'safe_author': True, 'body': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n\r\nEdit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too!', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 26, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-06T10:07:26Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6682347324', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6682347324', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6682347324, 'node_id': 'IC_kwDOALCn2M8AAAABjkyHPA', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T10:07:26Z', 'updated_at': '2026-11-06T10:11:31Z', 'body': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.\r\n\r\nEdit: I can’t reproduce that one bug on [Niri](https://niri-wm.github.io/niri/), and the memory stays flat too!', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6682347324/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-06T01:29:48Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15771, 'watchers_count': 15771, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 480, 'watchers': 15771, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T10:07:29.612651 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'created', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6682347324', 'safe_author': True, 'body': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 26, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-06T10:07:26Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6682347324', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6682347324', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6682347324, 'node_id': 'IC_kwDOALCn2M8AAAABjkyHPA', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T10:07:26Z', 'updated_at': '2026-11-06T10:07:26Z', 'body': 'Hi, thanks for the reproducer! Unfortunately, it seems to disprove your theory from what I understand. Here is one where it went up to OOM: [qleak.3086368.txt](https://github.com/user-attachments/files/34473523/qleak.3086368.txt)\r\n\r\nA bug I found though is that Dolphin is receiving a flood of `leave`/`enter` events, according to `WAYLAND_DEBUG=1`. Timestamps here are in ms, so it’s looping approximately every 0.045ms, which could maybe be the cause of something:\r\n```\r\n[2292391.713] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.718] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.722] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.727] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.732] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.736] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.740] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.745] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.749] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.754] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.758] {Default Queue} wl_surface#63.leave(wl_output#12)\r\n[2292391.763] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.767] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.772] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.776] {Default Queue} -> wl_surface#63.commit()\r\n[2292391.793] {Default Queue} wl_surface#63.enter(wl_output#12)\r\n[2292391.798] {Default Queue} -> wl_surface#63.set_buffer_scale(1)\r\n[2292391.802] {Default Queue} -> wl_surface#63.attach(wl_buffer#65, 0, 0)\r\n[2292391.807] {Default Queue} -> wl_surface#63.damage(0, 0, 24, 24)\r\n[2292391.812] {Default Queue} -> wl_surface#63.commit()\r\n```\r\n\r\nI will try another compositor, maybe weston has a bug, in which case I’ll report it on their bug tracker.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6682347324/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-06T01:29:48Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15771, 'watchers_count': 15771, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 480, 'watchers': 15771, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T03:19:21.749973 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 13060, 'title': "Don't unlink shared memory on Unix", 'url': 'https://github.com/dolphin-emu/dolphin/pull/13060#issuecomment-6675940566', 'safe_author': True, 'body': 'I think delaying `shm_unlink` until destruction is a bad idea since it will stick around when Dolphin crashes.\r\nIf the `shmctl` route is feasible, maybe that would be a better idea.\r\n\r\nPotentially delaying `shm_unlink` could be acceptable if it required the user set an explicit option.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13060', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13060/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13060/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13060/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13060', 'id': 2515215981, 'node_id': 'PR_kwDOALCn2M566xth', 'number': 13060, 'title': "Don't unlink shared memory on Unix", 'user': {'login': 'HazardousPeach', 'id': 1854619, 'node_id': 'MDQ6VXNlcjE4NTQ2MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1854619?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/HazardousPeach', 'html_url': 'https://github.com/HazardousPeach', 'followers_url': 'https://api.github.com/users/HazardousPeach/followers', 'following_url': 'https://api.github.com/users/HazardousPeach/following{/other_user}', 'gists_url': 'https://api.github.com/users/HazardousPeach/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/HazardousPeach/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/HazardousPeach/subscriptions', 'organizations_url': 'https://api.github.com/users/HazardousPeach/orgs', 'repos_url': 'https://api.github.com/users/HazardousPeach/repos', 'events_url': 'https://api.github.com/users/HazardousPeach/events{/privacy}', 'received_events_url': 'https://api.github.com/users/HazardousPeach/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 9, 'created_at': '2024-09-10T01:35:48Z', 'updated_at': '2026-11-06T03:19:19Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13060', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13060', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13060.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13060.patch', 'merged_at': None}, 'body': "Essentially adds the functionality from PR #6091 to Unix platforms. This allows third party tools like DME and JuniorsToolbox to access the shared memory region allowing them to manipulate game memory for various functionality. To do this, keep the shared memory object mapped to a name so that the other process can access it, instead of unlinking it from the name right after creation. This might leak files into the temp filesystem, like mentioned in\r\nhttps://github.com/dolphin-emu/dolphin/pull/9834#discussion_r803123299, but will only be one virtual file per dolphin that gets deleted on shutdown, so I think it's fine.\r\n\r\nIf the leaking is a problem or there's another reason why it's important to unlink the file most of the time, I could try to make a larger pull request that makes this a flag instead, but since it makes the behavior more consistent with windows I thought I'd try it this way first.\r\n\r\nHappy to discuss/improve!", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13060/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/dolphin-emu/dolphin/issues/13060/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6675940566', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13060#issuecomment-6675940566', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13060', 'id': 6675940566, 'node_id': 'IC_kwDOALCn2M8AAAABjerE1g', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T03:19:18Z', 'updated_at': '2026-11-06T03:19:18Z', 'body': 'I think delaying `shm_unlink` until destruction is a bad idea since it will stick around when Dolphin crashes.\r\nIf the `shmctl` route is feasible, maybe that would be a better idea.\r\n\r\nPotentially delaying `shm_unlink` could be acceptable if it required the user set an explicit option.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6675940566/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-06T01:29:48Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15771, 'watchers_count': 15771, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 480, 'watchers': 15771, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T03:04:52.043121 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 12757, 'title': 'Readme.md: rework build instructions', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12757#issuecomment-6675727753', 'safe_author': True, 'body': "Detailed build instructions were moved out of the Readme.md in c1261e74060e9938678f2c0472c8e87196c2b496\r\nI don't know if the proposed changes are still necessary, but this PR would need a rebase.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12757', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12757/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12757/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12757/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12757', 'id': 2278437534, 'node_id': 'PR_kwDOALCn2M5ug37w', 'number': 12757, 'title': 'Readme.md: rework build instructions', 'user': {'login': 'guijan', 'id': 25590950, 'node_id': 'MDQ6VXNlcjI1NTkwOTUw', 'avatar_url': 'https://avatars.githubusercontent.com/u/25590950?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/guijan', 'html_url': 'https://github.com/guijan', 'followers_url': 'https://api.github.com/users/guijan/followers', 'following_url': 'https://api.github.com/users/guijan/following{/other_user}', 'gists_url': 'https://api.github.com/users/guijan/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/guijan/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/guijan/subscriptions', 'organizations_url': 'https://api.github.com/users/guijan/orgs', 'repos_url': 'https://api.github.com/users/guijan/repos', 'events_url': 'https://api.github.com/users/guijan/events{/privacy}', 'received_events_url': 'https://api.github.com/users/guijan/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2024-05-03T21:17:29Z', 'updated_at': '2026-11-06T03:04:49Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/12757', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12757', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12757.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12757.patch', 'merged_at': None}, 'body': "I've only tested the instructions on OpenBSD 7.5 amd64. I haven't tested the uninstall instructions because it turns out installation is broken, it doesn't respect a custom installation prefix specified by e.g. `cmake --install build --prefix /tmp/dolphin`, and I don't want to pollute my system installation prefix.\r\n\r\nYou can preview how it looks at [guijan/dolphin/tree/build-inst](https://github.com/guijan/dolphin/tree/build-inst)\r\nPerhaps, if this new text is accepted, a future PR could move the new instructions to Dolphin's Github Wiki to further remove duplication between the wiki and the readme? Or, because the wiki is not included in a checkout, move the wiki's instructions (not necessarily verbatim) to the readme.\r\n\r\nEdit: the force-push was just to remove accidental tabs in the commit message.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12757/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/dolphin-emu/dolphin/issues/12757/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6675727753', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12757#issuecomment-6675727753', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12757', 'id': 6675727753, 'node_id': 'IC_kwDOALCn2M8AAAABjeeFiQ', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T03:04:49Z', 'updated_at': '2026-11-06T03:04:49Z', 'body': "Detailed build instructions were moved out of the Readme.md in c1261e74060e9938678f2c0472c8e87196c2b496\r\nI don't know if the proposed changes are still necessary, but this PR would need a rebase.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6675727753/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-06T01:29:48Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15771, 'watchers_count': 15771, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 480, 'watchers': 15771, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-06T00:04:22.968754 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'created', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6672838959', 'safe_author': False, 'body': '> Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n> \r\n> As I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n> \r\n> ```\r\n> Error sending request for wl_surface.attach: Broken pipe\r\n> 58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n> 58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\n> The Wayland connection broke. Did the Wayland compositor die?\r\n> ```\r\n> \r\n> I had never encountered that on xcb, so it’s possibly a regression too.\r\n> \r\n> I’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n> \r\n> Edit: on the Weston side, here is the log at the time of the crash:\r\n> \r\n> ```\r\n> [12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n> [12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n> ```\r\n> \r\n> Edit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img alt="image" width="427" height="391" src="https://private-user-images.githubusercontent.com/7755816/696150028-e0433761-9d35-4a5e-a239-e0c72d154841.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM5MTkwOTUsIm5iZiI6MTc5MzkxODc5NSwicGF0aCI6Ii83NzU1ODE2LzY5NjE1MDAyOC1lMDQzMzc2MS05ZDM1LTRhNWUtYTIzOS1lMGM3MmQxNTQ4NDEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTEwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjExMDVUMjI0NjM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NWNkOTc0NWJkYzJmYTlkY2Y5OWYzMjFlYjU5NjEwN2M5OGQzOGY2Mzk1MWY5YjlmYzVlOWViZjFmZGZiY2RkMyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.dCG21EBf6b9GdwN3ylT3svWrU167DjDViMkj9tHhUX4">\r\n> \r\n> Edit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img alt="image" width="1920" height="1080" src="https://private-user-images.githubusercontent.com/7755816/696162572-fcc485d9-b334-47de-aa5d-363d7c167b11.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM5MTkwOTUsIm5iZiI6MTc5MzkxODc5NSwicGF0aCI6Ii83NzU1ODE2LzY5NjE2MjU3Mi1mY2M0ODVkOS1iMzM0LTQ3ZGUtYWE1ZC0zNjNkN2MxNjdiMTEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTEwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjExMDVUMjI0NjM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZmMwMzI1YzVlZTcwNTViNmJkMDJmZWRmMmFkODE2YTMwM2IyOGRkYWYzZjQxNjEwMmMxNjU0NTE3YzczNDYwNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.W6-1lAW4VVvKfWH5n0fGYW5nXdqqpcUH7y_RaPow8BI">\r\n> \r\n> We are allocating a huge amount of temporaries in `QtWaylandClient::QWaylandInputDevice::Pointer::updateCursor() in libQt6WaylandClient.so.6` as well, maybe that’s related, but they don’t get leaked.\r\n\r\n\r\n\r\n> Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n> \r\n> As I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n> \r\n> ```\r\n> Error sending request for wl_surface.attach: Broken pipe\r\n> 58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n> 58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\n> The Wayland connection broke. Did the Wayland compositor die?\r\n> ```\r\n> \r\n> I had never encountered that on xcb, so it’s possibly a regression too.\r\n> \r\n> I’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n> \r\n> Edit: on the Weston side, here is the log at the time of the crash:\r\n> \r\n> ```\r\n> [12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n> [12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n> ```\r\n> \r\n> Edit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img alt="image" width="427" height="391" src="https://private-user-images.githubusercontent.com/7755816/696150028-e0433761-9d35-4a5e-a239-e0c72d154841.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM5MTkwOTUsIm5iZiI6MTc5MzkxODc5NSwicGF0aCI6Ii83NzU1ODE2LzY5NjE1MDAyOC1lMDQzMzc2MS05ZDM1LTRhNWUtYTIzOS1lMGM3MmQxNTQ4NDEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTEwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjExMDVUMjI0NjM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NWNkOTc0NWJkYzJmYTlkY2Y5OWYzMjFlYjU5NjEwN2M5OGQzOGY2Mzk1MWY5YjlmYzVlOWViZjFmZGZiY2RkMyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.dCG21EBf6b9GdwN3ylT3svWrU167DjDViMkj9tHhUX4">\r\n> \r\n> Edit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img alt="image" width="1920" height="1080" src="https://private-user-images.githubusercontent.com/7755816/696162572-fcc485d9-b334-47de-aa5d-363d7c167b11.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM5MTkwOTUsIm5iZiI6MTc5MzkxODc5NSwicGF0aCI6Ii83NzU1ODE2LzY5NjE2MjU3Mi1mY2M0ODVkOS1iMzM0LTQ3ZGUtYWE1ZC0zNjNkN2MxNjdiMTEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTEwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjExMDVUMjI0NjM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZmMwMzI1YzVlZTcwNTViNmJkMDJmZWRmMmFkODE2YTMwM2IyOGRkYWYzZjQxNjEwMmMxNjU0NTE3YzczNDYwNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.W6-1lAW4VVvKfWH5n0fGYW5nXdqqpcUH7y_RaPow8BI">\r\n> \r\n> We are allocating a huge amount of temporaries in `QtWaylandClient::QWaylandInputDevice::Pointer::updateCursor() in libQt6WaylandClient.so.6` as well, maybe that’s related, but they don’t get leaked.\r\n\r\nThank you! that narrows it down a lot. The leaked closures come from events that libwayland has read and queued but that nobody ever dispatches. Qt\'s main queue can\'t build up like this, because Qt only reads more once it\'s empty, so it has to be one of the other queues on the connection: our input or content-type queue, one of Qt\'s own, or one of Mesa\'s Vulkan WSI queues.\r\n\r\nI couldn\'t reproduce it. I tried my Steam Deck to match your setup more closely (radv, SteamOS\'s Mesa 26.2-devel) on both KWin and Weston, in a separate window and in render to main window, while moving the cursor over the game. I also tried sway with NVIDIA and lavapipe. Memory stayed flat and every queue stayed at 4 or fewer pending events. Going by your heaptrack totals, something on your side is queuing roughly 7,000 events a second, so whichever queue it is should be obvious within seconds.\r\n\r\nCould you try to reproduce it with the attached preload? It logs, once a second, how many events are pending in each queue, which library created the queue, and for large queues, which events they are:\r\n\r\n```\r\ncc -O2 -shared -fPIC -o qleak.so qleak.c -lwayland-client -ldl -lpthread\r\nLD_PRELOAD=$PWD/qleak.so dolphin-emu\r\n```\r\n\r\nThe log goes to `/tmp/[qleak.<pid>](https://github.com/tmp/qleak.%3Cpid%3E)`. The `NEW qN by <library>` lines say who created each queue, and the `T<seconds>` lines show the one that keeps growing. The first minute or two is enough, no need to wait for the OOM.\r\n\r\nThe watcher I made for debugging can be found here:\r\nhttps://gist.github.com/ellierocks/f440b83f0df6c7822df6ead0ac200896', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 25, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-06T00:04:20Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6672838959', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6672838959', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6672838959, 'node_id': 'IC_kwDOALCn2M8AAAABjbtxLw', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-06T00:04:20Z', 'updated_at': '2026-11-06T00:04:20Z', 'body': '> Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n> \r\n> As I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n> \r\n> ```\r\n> Error sending request for wl_surface.attach: Broken pipe\r\n> 58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n> 58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\n> The Wayland connection broke. Did the Wayland compositor die?\r\n> ```\r\n> \r\n> I had never encountered that on xcb, so it’s possibly a regression too.\r\n> \r\n> I’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n> \r\n> Edit: on the Weston side, here is the log at the time of the crash:\r\n> \r\n> ```\r\n> [12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n> [12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n> ```\r\n> \r\n> Edit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img alt="image" width="427" height="391" src="https://private-user-images.githubusercontent.com/7755816/696150028-e0433761-9d35-4a5e-a239-e0c72d154841.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM5MTkwOTUsIm5iZiI6MTc5MzkxODc5NSwicGF0aCI6Ii83NzU1ODE2LzY5NjE1MDAyOC1lMDQzMzc2MS05ZDM1LTRhNWUtYTIzOS1lMGM3MmQxNTQ4NDEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTEwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjExMDVUMjI0NjM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NWNkOTc0NWJkYzJmYTlkY2Y5OWYzMjFlYjU5NjEwN2M5OGQzOGY2Mzk1MWY5YjlmYzVlOWViZjFmZGZiY2RkMyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.dCG21EBf6b9GdwN3ylT3svWrU167DjDViMkj9tHhUX4">\r\n> \r\n> Edit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img alt="image" width="1920" height="1080" src="https://private-user-images.githubusercontent.com/7755816/696162572-fcc485d9-b334-47de-aa5d-363d7c167b11.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM5MTkwOTUsIm5iZiI6MTc5MzkxODc5NSwicGF0aCI6Ii83NzU1ODE2LzY5NjE2MjU3Mi1mY2M0ODVkOS1iMzM0LTQ3ZGUtYWE1ZC0zNjNkN2MxNjdiMTEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTEwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjExMDVUMjI0NjM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZmMwMzI1YzVlZTcwNTViNmJkMDJmZWRmMmFkODE2YTMwM2IyOGRkYWYzZjQxNjEwMmMxNjU0NTE3YzczNDYwNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.W6-1lAW4VVvKfWH5n0fGYW5nXdqqpcUH7y_RaPow8BI">\r\n> \r\n> We are allocating a huge amount of temporaries in `QtWaylandClient::QWaylandInputDevice::Pointer::updateCursor() in libQt6WaylandClient.so.6` as well, maybe that’s related, but they don’t get leaked.\r\n\r\n\r\n\r\n> Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n> \r\n> As I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n> \r\n> ```\r\n> Error sending request for wl_surface.attach: Broken pipe\r\n> 58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n> 58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\n> The Wayland connection broke. Did the Wayland compositor die?\r\n> ```\r\n> \r\n> I had never encountered that on xcb, so it’s possibly a regression too.\r\n> \r\n> I’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n> \r\n> Edit: on the Weston side, here is the log at the time of the crash:\r\n> \r\n> ```\r\n> [12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n> [12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n> ```\r\n> \r\n> Edit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img alt="image" width="427" height="391" src="https://private-user-images.githubusercontent.com/7755816/696150028-e0433761-9d35-4a5e-a239-e0c72d154841.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM5MTkwOTUsIm5iZiI6MTc5MzkxODc5NSwicGF0aCI6Ii83NzU1ODE2LzY5NjE1MDAyOC1lMDQzMzc2MS05ZDM1LTRhNWUtYTIzOS1lMGM3MmQxNTQ4NDEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTEwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjExMDVUMjI0NjM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NWNkOTc0NWJkYzJmYTlkY2Y5OWYzMjFlYjU5NjEwN2M5OGQzOGY2Mzk1MWY5YjlmYzVlOWViZjFmZGZiY2RkMyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.dCG21EBf6b9GdwN3ylT3svWrU167DjDViMkj9tHhUX4">\r\n> \r\n> Edit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img alt="image" width="1920" height="1080" src="https://private-user-images.githubusercontent.com/7755816/696162572-fcc485d9-b334-47de-aa5d-363d7c167b11.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTM5MTkwOTUsIm5iZiI6MTc5MzkxODc5NSwicGF0aCI6Ii83NzU1ODE2LzY5NjE2MjU3Mi1mY2M0ODVkOS1iMzM0LTQ3ZGUtYWE1ZC0zNjNkN2MxNjdiMTEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTEwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjExMDVUMjI0NjM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZmMwMzI1YzVlZTcwNTViNmJkMDJmZWRmMmFkODE2YTMwM2IyOGRkYWYzZjQxNjEwMmMxNjU0NTE3YzczNDYwNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.W6-1lAW4VVvKfWH5n0fGYW5nXdqqpcUH7y_RaPow8BI">\r\n> \r\n> We are allocating a huge amount of temporaries in `QtWaylandClient::QWaylandInputDevice::Pointer::updateCursor() in libQt6WaylandClient.so.6` as well, maybe that’s related, but they don’t get leaked.\r\n\r\nThank you! that narrows it down a lot. The leaked closures come from events that libwayland has read and queued but that nobody ever dispatches. Qt\'s main queue can\'t build up like this, because Qt only reads more once it\'s empty, so it has to be one of the other queues on the connection: our input or content-type queue, one of Qt\'s own, or one of Mesa\'s Vulkan WSI queues.\r\n\r\nI couldn\'t reproduce it. I tried my Steam Deck to match your setup more closely (radv, SteamOS\'s Mesa 26.2-devel) on both KWin and Weston, in a separate window and in render to main window, while moving the cursor over the game. I also tried sway with NVIDIA and lavapipe. Memory stayed flat and every queue stayed at 4 or fewer pending events. Going by your heaptrack totals, something on your side is queuing roughly 7,000 events a second, so whichever queue it is should be obvious within seconds.\r\n\r\nCould you try to reproduce it with the attached preload? It logs, once a second, how many events are pending in each queue, which library created the queue, and for large queues, which events they are:\r\n\r\n```\r\ncc -O2 -shared -fPIC -o qleak.so qleak.c -lwayland-client -ldl -lpthread\r\nLD_PRELOAD=$PWD/qleak.so dolphin-emu\r\n```\r\n\r\nThe log goes to `/tmp/[qleak.<pid>](https://github.com/tmp/qleak.%3Cpid%3E)`. The `NEW qN by <library>` lines say who created each queue, and the `T<seconds>` lines show the one that keeps growing. The first minute or two is enough, no need to wait for the OOM.\r\n\r\nThe watcher I made for debugging can be found here:\r\nhttps://gist.github.com/ellierocks/f440b83f0df6c7822df6ead0ac200896', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6672838959/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T23:43:25Z', 'pushed_at': '2026-11-05T22:43:53Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563808, 'stargazers_count': 15770, 'watchers_count': 15770, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 481, 'watchers': 15770, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T22:50:44.832317 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'AdmiralCurtiss', 'action': 'created', 'id': 14924, 'title': 'TraversalServer: bound tracked client state', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14924#issuecomment-6671601590', 'safe_author': True, 'body': 'Absolutely not an area of code I have ever looked at but this looks sensible at least.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14924', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14924/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14924/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14924/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14924', 'id': 5752598560, 'node_id': 'PR_kwDOALCn2M8AAAABHNsdgg', 'number': 14924, 'title': 'TraversalServer: bound tracked client state', 'user': {'login': 'acts-1631', 'id': 69813585, 'node_id': 'MDQ6VXNlcjY5ODEzNTg1', 'avatar_url': 'https://avatars.githubusercontent.com/u/69813585?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/acts-1631', 'html_url': 'https://github.com/acts-1631', 'followers_url': 'https://api.github.com/users/acts-1631/followers', 'following_url': 'https://api.github.com/users/acts-1631/following{/other_user}', 'gists_url': 'https://api.github.com/users/acts-1631/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/acts-1631/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/acts-1631/subscriptions', 'organizations_url': 'https://api.github.com/users/acts-1631/orgs', 'repos_url': 'https://api.github.com/users/acts-1631/repos', 'events_url': 'https://api.github.com/users/acts-1631/events{/privacy}', 'received_events_url': 'https://api.github.com/users/acts-1631/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2026-10-07T22:10:07Z', 'updated_at': '2026-11-05T22:50:42Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14924', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14924', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14924.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14924.patch', 'merged_at': None}, 'body': 'TraversalServer accepts unauthenticated HelloFromClient and ConnectPlease packets. HelloFromClient adds a connectedClients registration, while both packet types can add reliable replies to outgoingPackets. Neither table has a hard limit, and EvictFind only removes expired clients from the queried hash bucket, allowing packet floods to exhaust server memory.\n\nLimit both tables to 65,536 entries. When connectedClients reaches capacity, remove expired registrations at most once per second before rejecting new state. Check outgoingPackets capacity before allocating tracked replies and send an untracked negative acknowledgement when capacity is unavailable. This bounds memory use while preventing full-table cleanup on every received packet.\n\nFixes: 779f275486dc720858c7f91416803fe5f6b43e74\n', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14924/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/dolphin-emu/dolphin/issues/14924/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6671601590', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14924#issuecomment-6671601590', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14924', 'id': 6671601590, 'node_id': 'IC_kwDOALCn2M8AAAABjaiPtg', 'user': {'login': 'AdmiralCurtiss', 'id': 4522237, 'node_id': 'MDQ6VXNlcjQ1MjIyMzc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/4522237?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AdmiralCurtiss', 'html_url': 'https://github.com/AdmiralCurtiss', 'followers_url': 'https://api.github.com/users/AdmiralCurtiss/followers', 'following_url': 'https://api.github.com/users/AdmiralCurtiss/following{/other_user}', 'gists_url': 'https://api.github.com/users/AdmiralCurtiss/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AdmiralCurtiss/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AdmiralCurtiss/subscriptions', 'organizations_url': 'https://api.github.com/users/AdmiralCurtiss/orgs', 'repos_url': 'https://api.github.com/users/AdmiralCurtiss/repos', 'events_url': 'https://api.github.com/users/AdmiralCurtiss/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AdmiralCurtiss/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T22:50:42Z', 'updated_at': '2026-11-05T22:50:42Z', 'body': 'Absolutely not an area of code I have ever looked at but this looks sensible at least.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6671601590/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T22:43:59Z', 'pushed_at': '2026-11-05T22:43:53Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563788, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 481, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'AdmiralCurtiss', 'id': 4522237, 'node_id': 'MDQ6VXNlcjQ1MjIyMzc=', 'avatar_url': 'https://avatars.githubusercontent.com/u/4522237?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AdmiralCurtiss', 'html_url': 'https://github.com/AdmiralCurtiss', 'followers_url': 'https://api.github.com/users/AdmiralCurtiss/followers', 'following_url': 'https://api.github.com/users/AdmiralCurtiss/following{/other_user}', 'gists_url': 'https://api.github.com/users/AdmiralCurtiss/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AdmiralCurtiss/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AdmiralCurtiss/subscriptions', 'organizations_url': 'https://api.github.com/users/AdmiralCurtiss/orgs', 'repos_url': 'https://api.github.com/users/AdmiralCurtiss/repos', 'events_url': 'https://api.github.com/users/AdmiralCurtiss/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AdmiralCurtiss/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T21:51:25.776225 {'source': 'ghhookparser', 'repo': 'dolphin-emu/central', 'author': 'dependabot[bot]', 'action': 'created', 'id': 13, 'title': 'build(deps): bump oauthlib from 3.3.1 to 4.0.0', 'url': 'https://github.com/dolphin-emu/central/pull/13#issuecomment-6670487725', 'safe_author': False, 'body': 'Superseded by #19.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/central/issues/13', 'repository_url': 'https://api.github.com/repos/dolphin-emu/central', 'labels_url': 'https://api.github.com/repos/dolphin-emu/central/issues/13/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/central/issues/13/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/central/issues/13/events', 'html_url': 'https://github.com/dolphin-emu/central/pull/13', 'id': 5655816755, 'node_id': 'PR_kwDOIrODg88AAAABGAsSKw', 'number': 13, 'title': 'build(deps): bump oauthlib from 3.3.1 to 4.0.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': 5534651664, 'node_id': 'LA_kwDOIrODg88AAAABSeQVEA', 'url': 'https://api.github.com/repos/dolphin-emu/central/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12482639162, 'node_id': 'LA_kwDOIrODg88AAAAC6AX1Og', 'url': 'https://api.github.com/repos/dolphin-emu/central/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-10-01T02:16:49Z', 'updated_at': '2026-11-05T21:51:23Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/central/pulls/13', 'html_url': 'https://github.com/dolphin-emu/central/pull/13', 'diff_url': 'https://github.com/dolphin-emu/central/pull/13.diff', 'patch_url': 'https://github.com/dolphin-emu/central/pull/13.patch', 'merged_at': None}, 'body': 'Bumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.3.1 to 4.0.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href="https://github.com/oauthlib/oauthlib/releases">oauthlib\'s releases</a>.</em></p>\n<blockquote>\n<h2>4.0.0</h2>\n<h2>Introduction</h2>\n<p>The release 4.0.0 defines the foundation that enables AI contributions and will improve the maintenance of oauthlib by using AI agents, skills, code for both contributors and maintainers. It includes devcontainer, skills and cleanup of instructions.</p>\n<h2>What\'s Changed</h2>\n<p><strong>Important</strong>: this release contains 2 breaking changes. See CHANGELOG.rst for details:</p>\n<ul>\n<li>Removed JSONP support from token revocation endpoint (<a href="https://redirect.github.com/oauthlib/oauthlib/issues/951">#951</a>)</li>\n<li>Client authentication validation reorganized across grants (<a href="https://redirect.github.com/oauthlib/oauthlib/issues/919">#919</a>, <a href="https://redirect.github.com/oauthlib/oauthlib/issues/920">#920</a>):\nthe <code>grant_type</code> parameter is now validated before client authentication.</li>\n</ul>\n<ul>\n<li>Replace pyenv with uv in documentation and tooling by <a href="https://github.com/JonathanHuot"><code>@\u200bJonathanHuot</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/910">oauthlib/oauthlib#910</a></li>\n<li>Improve github action to publish package by <a href="https://github.com/JonathanHuot"><code>@\u200bJonathanHuot</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/915">oauthlib/oauthlib#915</a></li>\n<li>Add pre-commit to run linters, formatters, etc. on code changes by <a href="https://github.com/cclauss"><code>@\u200bcclauss</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/918">oauthlib/oauthlib#918</a></li>\n<li>Fix client authentication for DeviceCodeGrant when getting a token by <a href="https://github.com/hekhuisk"><code>@\u200bhekhuisk</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/920">oauthlib/oauthlib#920</a></li>\n<li>Add project URLs to this project\'s PyPI page by <a href="https://github.com/Flimm"><code>@\u200bFlimm</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/921">oauthlib/oauthlib#921</a></li>\n<li>Fix a typo in ServiceApplicationClient docstring. by <a href="https://github.com/rafalkrupinski"><code>@\u200brafalkrupinski</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/923">oauthlib/oauthlib#923</a></li>\n<li>Correct grammar in function help by <a href="https://github.com/verhovsky"><code>@\u200bverhovsky</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/924">oauthlib/oauthlib#924</a></li>\n<li>Add Python 3.14 to the testing by <a href="https://github.com/cclauss"><code>@\u200bcclauss</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/925">oauthlib/oauthlib#925</a></li>\n<li>Initial python/uv/tox devcontainer by <a href="https://github.com/JonathanHuot"><code>@\u200bJonathanHuot</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/930">oauthlib/oauthlib#930</a></li>\n<li>Fix ruff checks about unused variables by <a href="https://github.com/JonathanHuot"><code>@\u200bJonathanHuot</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/931">oauthlib/oauthlib#931</a></li>\n<li>Drop EOL Python 3.8 from CI by <a href="https://github.com/auvipy"><code>@\u200bauvipy</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/932">oauthlib/oauthlib#932</a></li>\n<li>Set Open Collective username to \'oauthlib\' by <a href="https://github.com/auvipy"><code>@\u200bauvipy</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/933">oauthlib/oauthlib#933</a></li>\n<li>pre-commit autoupdate 2026_02_21 by <a href="https://github.com/cclauss"><code>@\u200bcclauss</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/934">oauthlib/oauthlib#934</a></li>\n<li>Remove a trailing whitespace fo fix failing pre-commit by <a href="https://github.com/cclauss"><code>@\u200bcclauss</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/935">oauthlib/oauthlib#935</a></li>\n<li>Fix typos discovered by typos by <a href="https://github.com/cclauss"><code>@\u200bcclauss</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/938">oauthlib/oauthlib#938</a></li>\n<li>Add <code>resource</code> to Request._params by <a href="https://github.com/juannyG"><code>@\u200bjuannyG</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/942">oauthlib/oauthlib#942</a></li>\n<li>Release 3.4.0: Add OAuthLib Maintainer agent by <a href="https://github.com/JonathanHuot"><code>@\u200bJonathanHuot</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/950">oauthlib/oauthlib#950</a></li>\n<li>Remove JSONP support from token revocation by <a href="https://github.com/JonathanHuot"><code>@\u200bJonathanHuot</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/951">oauthlib/oauthlib#951</a></li>\n<li>Improve PKCE code comparison by <a href="https://github.com/JonathanHuot"><code>@\u200bJonathanHuot</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/963">oauthlib/oauthlib#963</a></li>\n<li>Release 4.0.0: bump and update changelog by <a href="https://github.com/JonathanHuot"><code>@\u200bJonathanHuot</code></a> in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/976">oauthlib/oauthlib#976</a></li>\n</ul>\n<h2>New Contributors</h2>\n<ul>\n<li><a href="https://github.com/hekhuisk"><code>@\u200bhekhuisk</code></a> made their first contribution in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/920">oauthlib/oauthlib#920</a></li>\n<li><a href="https://github.com/Flimm"><code>@\u200bFlimm</code></a> made their first contribution in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/921">oauthlib/oauthlib#921</a></li>\n<li><a href="https://github.com/verhovsky"><code>@\u200bverhovsky</code></a> made their first contribution in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/924">oauthlib/oauthlib#924</a></li>\n<li><a href="https://github.com/juannyG"><code>@\u200bjuannyG</code></a> made their first contribution in <a href="https://redirect.github.com/oauthlib/oauthlib/pull/942">oauthlib/oauthlib#942</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href="https://github.com/oauthlib/oauthlib/compare/v3.3.1...v4.0.0">https://github.com/oauthlib/oauthlib/compare/v3.3.1...v4.0.0</a></p>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/oauthlib/oauthlib/blob/master/CHANGELOG.rst">oauthlib\'s changelog</a>.</em></p>\n<blockquote>\n<h2>4.0.0 (2026-09-28):</h2>\n<p>OAuth2.0 Provider:</p>\n<ul>\n<li><strong>Breaking</strong>: <a href="https://redirect.github.com/oauthlib/oauthlib/issues/951">#951</a>: Removed JSONP support from token revocation endpoint.\nJSONP has been superseded by CORS for cross-origin requests.\nThe <code>enable_jsonp</code> parameter has been removed from <code>RevocationEndpoint</code>\nand the <code>callback</code> parameter has been removed from\n<code>prepare_token_revocation_request</code>.</li>\n<li><strong>Breaking</strong>: <a href="https://redirect.github.com/oauthlib/oauthlib/issues/919">#919</a>, <a href="https://redirect.github.com/oauthlib/oauthlib/issues/920">#920</a>: Fixed <code>DeviceCodeGrant.validate_token_request</code>\ntrying to authenticate public clients.\nClient authentication validation has been reorganized and is now shared\nacross <code>AuthorizationCodeGrant</code>, <code>DeviceCodeGrant</code>, <code>RefreshTokenGrant</code>\nand <code>ResourceOwnerPasswordCredentialsGrant</code>: the <code>grant_type</code> parameter\nis validated before client authentication, so requests missing\n<code>grant_type</code> now return <code>400 invalid_request</code> instead of\n<code>401 invalid_client</code>.</li>\n<li><a href="https://redirect.github.com/oauthlib/oauthlib/issues/963">#963</a>: Improved PKCE code comparison</li>\n</ul>\n<p>Misc:</p>\n<ul>\n<li><a href="https://redirect.github.com/oauthlib/oauthlib/issues/904">#904</a>: Stop installing <code>examples</code> into <code>site-packages</code>.</li>\n<li><a href="https://redirect.github.com/oauthlib/oauthlib/issues/930">#930</a>: Add devcontainer, Add Python3.14, Python3.14t.</li>\n<li><a href="https://redirect.github.com/oauthlib/oauthlib/issues/931">#931</a>: Fix ruff checks about unused variables.</li>\n<li><a href="https://redirect.github.com/oauthlib/oauthlib/issues/932">#932</a>: Dropped EOL Python 3.8 from CI.</li>\n<li><a href="https://redirect.github.com/oauthlib/oauthlib/issues/934">#934</a>: Pre-commit hooks autoupdate.</li>\n<li><a href="https://redirect.github.com/oauthlib/oauthlib/issues/938">#938</a>: Fix typos discovered by typos.</li>\n<li>Add OAuthLib Maintainer agent for automated issue/PR triage and release\nmanagement.</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/145a9a4690cb4d9de30d15fcc2984e34c49df741"><code>145a9a4</code></a> Release 4.0.0: clarify changelog breaking changes and reformat entries</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/c8344d61492c7ae708cf378ecabab7ee6ab62812"><code>c8344d6</code></a> Update CHANGELOG.rst</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/e172830efd66a2dc1bb34b3bbbf8ee53036a9dac"><code>e172830</code></a> Release 4.0.0: bump version to 4.0.0 and update changelog</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/40b0ab56da3682c2484a4b78bbff309f8025d950"><code>40b0ab5</code></a> Merge pull request <a href="https://redirect.github.com/oauthlib/oauthlib/issues/963">#963</a> from oauthlib/ft/pkcecode</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/1b68ceaae02fe62aeaaa3468a8f8082c73830a3a"><code>1b68cea</code></a> Merge pull request <a href="https://redirect.github.com/oauthlib/oauthlib/issues/920">#920</a> from hekhuisk/validate-client-authentication</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/c951a1d09f99f14e3240973fa83c4f4287d4753d"><code>c951a1d</code></a> Organized validate_client functions for all grant to avoid mistake in grnat i...</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/74664d3fe037a354e180e305135c6bab1747a6b0"><code>74664d3</code></a> Improve PKCE code comparison</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/9859b057ecc5d1ad42711af7d58ee471d708ea36"><code>9859b05</code></a> Merge pull request <a href="https://redirect.github.com/oauthlib/oauthlib/issues/950">#950</a> from oauthlib/feature/3.4.0-maintainer-agent</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/9bf9b974e0797d2d03cba05854f46e314c730ba6"><code>9bf9b97</code></a> Merge branch \'master\' into feature/3.4.0-maintainer-agent</li>\n<li><a href="https://github.com/oauthlib/oauthlib/commit/1ba7429ad79019289540fd7be27866d7e59f2564"><code>1ba7429</code></a> Clarify agent instructions</li>\n<li>Additional commits viewable in <a href="https://github.com/oauthlib/oauthlib/compare/v3.3.1...v4.0.0">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[](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/dolphin-emu/central/network/alerts).\n\n</details>', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/central/issues/13/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/dolphin-emu/central/issues/13/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/central/issues/comments/6670487725', 'html_url': 'https://github.com/dolphin-emu/central/pull/13#issuecomment-6670487725', 'issue_url': 'https://api.github.com/repos/dolphin-emu/central/issues/13', 'id': 6670487725, 'node_id': 'IC_kwDOIrODg88AAAABjZeQrQ', '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-11-05T21:51:22Z', 'updated_at': '2026-11-05T21:51:22Z', 'body': 'Superseded by #19.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/central/issues/comments/6670487725/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': '2026-04-27T17:22:53Z', 'permissions': {'actions': 'write', 'checks': 'write', 'contents': 'write', 'issues': 'write', 'members': 'read', 'metadata': 'read', 'packages': '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']}, 'minimized': None}, 'repository': {'id': 582189955, 'node_id': 'R_kgDOIrODgw', 'name': 'central', 'full_name': 'dolphin-emu/central', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/central', 'description': "Plumbing for Dolphin's CI/CD infrastructure", 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/central', 'forks_url': 'https://api.github.com/repos/dolphin-emu/central/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/central/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/central/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/central/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/central/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/central/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/central/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/central/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/central/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/central/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/central/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/central/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/central/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/central/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/central/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/central/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/central/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/central/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/central/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/central/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/central/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/central/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/central/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/central/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/central/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/central/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/central/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/central/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/central/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/central/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/central/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/central/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/central/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/central/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/central/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/central/deployments', 'created_at': '2022-12-26T02:59:51Z', 'updated_at': '2026-08-21T05:00:56Z', 'pushed_at': '2026-11-05T21:51:13Z', 'git_url': 'git://github.com/dolphin-emu/central.git', 'ssh_url': 'git@github.com:dolphin-emu/central.git', 'clone_url': 'https://github.com/dolphin-emu/central.git', 'svn_url': 'https://github.com/dolphin-emu/central', 'homepage': None, 'size': 786, 'stargazers_count': 7, 'watchers_count': 7, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 11, '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': 3, 'open_issues': 11, 'watchers': 7, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T21:14:42.008814 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14874, 'title': 'WiiUtils: Fix integer underflow in CheckNAND() block/inode stats', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14874#issuecomment-6669730655', 'safe_author': True, 'body': 'I agree that it seems like this is only hiding the real issue of `ScanDirectoryTree` not following symlinks.\r\nThis stops the underflow, but the results are still wrong.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14874', 'id': 5490189982, 'node_id': 'PR_kwDOALCn2M8AAAABD9jIMw', 'number': 14874, 'title': 'WiiUtils: Fix integer underflow in CheckNAND() block/inode stats', 'user': {'login': 'cedricdelpoux', 'id': 2683300, 'node_id': 'MDQ6VXNlcjI2ODMzMDA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/2683300?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/cedricdelpoux', 'html_url': 'https://github.com/cedricdelpoux', 'followers_url': 'https://api.github.com/users/cedricdelpoux/followers', 'following_url': 'https://api.github.com/users/cedricdelpoux/following{/other_user}', 'gists_url': 'https://api.github.com/users/cedricdelpoux/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/cedricdelpoux/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/cedricdelpoux/subscriptions', 'organizations_url': 'https://api.github.com/users/cedricdelpoux/orgs', 'repos_url': 'https://api.github.com/users/cedricdelpoux/repos', 'events_url': 'https://api.github.com/users/cedricdelpoux/events{/privacy}', 'received_events_url': 'https://api.github.com/users/cedricdelpoux/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 4, 'created_at': '2026-09-17T16:40:45Z', 'updated_at': '2026-11-05T21:14:40Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14874', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14874', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14874.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14874.patch', 'merged_at': None}, 'body': '`used_clusters_user` (and `used_inodes_user`) is computed by calling `GetExtendedDirectoryStats()`\ndirectly on each user-data path, which follows symlinks. `root_stats` comes from a recursive scan\nstarting at `/`, which does not descend into symlinks.\n\nIf one of the user paths (e.g. `/title/00010000`) is a symlink to an external directory,\n`used_clusters_user` can end up larger than `root_stats->used_clusters`, since the recursive scan\nnever counted that symlinked content. The unguarded subtraction then underflows on these unsigned\n64-bit values, producing a number close to 2^64 instead of a sane result. The NAND Check dialog\nreports this as billions of blocks used and warns that saves may fail, even though the actual\n"user" part is correctly sized.\n\nSymlinking Wii save folders out of the NAND (e.g. to sync saves to a cloud folder) is a real\nworkflow some users rely on, so this isn\'t just a theoretical edge case — I hit it after setting\nup Dropbox-backed saves on a Steam Deck (Flatpak build), reproduced identically in a fresh,\notherwise-empty NAND.\n\n## How this was tested\n\nReproduced with a fresh NAND where `/title/00010000` is a symlink to an external directory\ncontaining save data. Before the fix, Check NAND reports billions of blocks used for the\nsystem-reserved part; after the fix, it correctly reports a bounded, sane value.\n\n## AI disclosure\n\nThe diagnosis (tracing the bug to this specific subtraction and the symlink-following mismatch\nbetween `GetExtendedDirectoryStats("/")` and the per-path calls) and the patch itself were\nproduced with the assistance of an AI coding agent (Claude), working interactively with me while\nI was debugging this issue on my own setup. I reviewed and understand the root cause and the fix\ndescribed above, and I\'m submitting and taking responsibility for this change as my own\ncontribution, per this project\'s generative AI policy.\n', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874/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/dolphin-emu/dolphin/issues/14874/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6669730655', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14874#issuecomment-6669730655', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874', 'id': 6669730655, 'node_id': 'IC_kwDOALCn2M8AAAABjYwDXw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T21:14:39Z', 'updated_at': '2026-11-05T21:14:39Z', 'body': 'I agree that it seems like this is only hiding the real issue of `ScanDirectoryTree` not following symlinks.\r\nThis stops the underflow, but the results are still wrong.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6669730655/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T20:09:48Z', 'pushed_at': '2026-11-05T19:32:36Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563788, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 483, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 483, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T12:27:26.841043 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'safe_author': True, 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```\r\n\r\nEdit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img width="427" height="391" alt="image" src="https://github.com/user-attachments/assets/e0433761-9d35-4a5e-a239-e0c72d154841" />\r\n\r\nEdit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/fcc485d9-b334-47de-aa5d-363d7c167b11" />\r\n\r\nWe are allocating a huge amount of temporaries in `QtWaylandClient::QWaylandInputDevice::Pointer::updateCursor() in libQt6WaylandClient.so.6` as well, maybe that’s related, but they don’t get leaked.', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```\r\n\r\nEdit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img width="427" height="391" alt="image" src="https://github.com/user-attachments/assets/e0433761-9d35-4a5e-a239-e0c72d154841" />\r\n\r\nEdit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/fcc485d9-b334-47de-aa5d-363d7c167b11" />'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 24, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-05T12:25:15Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6657447106, 'node_id': 'IC_kwDOALCn2M8AAAABjNCUwg', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T12:00:58Z', 'updated_at': '2026-11-05T12:27:25Z', 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```\r\n\r\nEdit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img width="427" height="391" alt="image" src="https://github.com/user-attachments/assets/e0433761-9d35-4a5e-a239-e0c72d154841" />\r\n\r\nEdit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/fcc485d9-b334-47de-aa5d-363d7c167b11" />\r\n\r\nWe are allocating a huge amount of temporaries in `QtWaylandClient::QWaylandInputDevice::Pointer::updateCursor() in libQt6WaylandClient.so.6` as well, maybe that’s related, but they don’t get leaked.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T09:25:24Z', 'pushed_at': '2026-11-04T20:55:25Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563769, 'stargazers_count': 15769, 'watchers_count': 15769, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15769, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T12:25:16.514944 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'safe_author': True, 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```\r\n\r\nEdit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img width="427" height="391" alt="image" src="https://github.com/user-attachments/assets/e0433761-9d35-4a5e-a239-e0c72d154841" />\r\n\r\nEdit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/fcc485d9-b334-47de-aa5d-363d7c167b11" />', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```\r\n\r\nEdit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img width="427" height="391" alt="image" src="https://github.com/user-attachments/assets/e0433761-9d35-4a5e-a239-e0c72d154841" />'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 24, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-05T12:12:07Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6657447106, 'node_id': 'IC_kwDOALCn2M8AAAABjNCUwg', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T12:00:58Z', 'updated_at': '2026-11-05T12:25:15Z', 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```\r\n\r\nEdit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img width="427" height="391" alt="image" src="https://github.com/user-attachments/assets/e0433761-9d35-4a5e-a239-e0c72d154841" />\r\n\r\nEdit 3: it seems that leak comes from Qt, or possibly the way we’re using it: <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/fcc485d9-b334-47de-aa5d-363d7c167b11" />', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T09:25:24Z', 'pushed_at': '2026-11-04T20:55:25Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563769, 'stargazers_count': 15769, 'watchers_count': 15769, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15769, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T12:12:09.429936 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'safe_author': True, 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```\r\n\r\nEdit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img width="427" height="391" alt="image" src="https://github.com/user-attachments/assets/e0433761-9d35-4a5e-a239-e0c72d154841" />', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 24, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-05T12:02:26Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6657447106, 'node_id': 'IC_kwDOALCn2M8AAAABjNCUwg', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T12:00:58Z', 'updated_at': '2026-11-05T12:12:07Z', 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```\r\n\r\nEdit 2: there is actually a memory leak apparently, here is a screenshot of `btop`’s memory graph, we can see it increasing linearly before being buffered away by zram, and once that one is filled too the OOM kills it: <img width="427" height="391" alt="image" src="https://github.com/user-attachments/assets/e0433761-9d35-4a5e-a239-e0c72d154841" />', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T09:25:24Z', 'pushed_at': '2026-11-04T20:55:25Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563769, 'stargazers_count': 15769, 'watchers_count': 15769, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15769, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T12:10:17.515787 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'cedricdelpoux', 'action': 'created', 'id': 14874, 'title': 'WiiUtils: Fix integer underflow in CheckNAND() block/inode stats', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14874#issuecomment-6657629063', 'safe_author': False, 'body': '@AdmiralCurtiss Any way to merge this ? Thanks', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14874', 'id': 5490189982, 'node_id': 'PR_kwDOALCn2M8AAAABD9jIMw', 'number': 14874, 'title': 'WiiUtils: Fix integer underflow in CheckNAND() block/inode stats', 'user': {'login': 'cedricdelpoux', 'id': 2683300, 'node_id': 'MDQ6VXNlcjI2ODMzMDA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/2683300?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/cedricdelpoux', 'html_url': 'https://github.com/cedricdelpoux', 'followers_url': 'https://api.github.com/users/cedricdelpoux/followers', 'following_url': 'https://api.github.com/users/cedricdelpoux/following{/other_user}', 'gists_url': 'https://api.github.com/users/cedricdelpoux/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/cedricdelpoux/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/cedricdelpoux/subscriptions', 'organizations_url': 'https://api.github.com/users/cedricdelpoux/orgs', 'repos_url': 'https://api.github.com/users/cedricdelpoux/repos', 'events_url': 'https://api.github.com/users/cedricdelpoux/events{/privacy}', 'received_events_url': 'https://api.github.com/users/cedricdelpoux/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-09-17T16:40:45Z', 'updated_at': '2026-11-05T12:10:15Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14874', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14874', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14874.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14874.patch', 'merged_at': None}, 'body': '`used_clusters_user` (and `used_inodes_user`) is computed by calling `GetExtendedDirectoryStats()`\ndirectly on each user-data path, which follows symlinks. `root_stats` comes from a recursive scan\nstarting at `/`, which does not descend into symlinks.\n\nIf one of the user paths (e.g. `/title/00010000`) is a symlink to an external directory,\n`used_clusters_user` can end up larger than `root_stats->used_clusters`, since the recursive scan\nnever counted that symlinked content. The unguarded subtraction then underflows on these unsigned\n64-bit values, producing a number close to 2^64 instead of a sane result. The NAND Check dialog\nreports this as billions of blocks used and warns that saves may fail, even though the actual\n"user" part is correctly sized.\n\nSymlinking Wii save folders out of the NAND (e.g. to sync saves to a cloud folder) is a real\nworkflow some users rely on, so this isn\'t just a theoretical edge case — I hit it after setting\nup Dropbox-backed saves on a Steam Deck (Flatpak build), reproduced identically in a fresh,\notherwise-empty NAND.\n\n## How this was tested\n\nReproduced with a fresh NAND where `/title/00010000` is a symlink to an external directory\ncontaining save data. Before the fix, Check NAND reports billions of blocks used for the\nsystem-reserved part; after the fix, it correctly reports a bounded, sane value.\n\n## AI disclosure\n\nThe diagnosis (tracing the bug to this specific subtraction and the symlink-following mismatch\nbetween `GetExtendedDirectoryStats("/")` and the per-path calls) and the patch itself were\nproduced with the assistance of an AI coding agent (Claude), working interactively with me while\nI was debugging this issue on my own setup. I reviewed and understand the root cause and the fix\ndescribed above, and I\'m submitting and taking responsibility for this change as my own\ncontribution, per this project\'s generative AI policy.\n', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874/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/dolphin-emu/dolphin/issues/14874/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657629063', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14874#issuecomment-6657629063', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14874', 'id': 6657629063, 'node_id': 'IC_kwDOALCn2M8AAAABjNNbhw', 'user': {'login': 'cedricdelpoux', 'id': 2683300, 'node_id': 'MDQ6VXNlcjI2ODMzMDA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/2683300?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/cedricdelpoux', 'html_url': 'https://github.com/cedricdelpoux', 'followers_url': 'https://api.github.com/users/cedricdelpoux/followers', 'following_url': 'https://api.github.com/users/cedricdelpoux/following{/other_user}', 'gists_url': 'https://api.github.com/users/cedricdelpoux/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/cedricdelpoux/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/cedricdelpoux/subscriptions', 'organizations_url': 'https://api.github.com/users/cedricdelpoux/orgs', 'repos_url': 'https://api.github.com/users/cedricdelpoux/repos', 'events_url': 'https://api.github.com/users/cedricdelpoux/events{/privacy}', 'received_events_url': 'https://api.github.com/users/cedricdelpoux/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T12:10:15Z', 'updated_at': '2026-11-05T12:10:15Z', 'body': '@AdmiralCurtiss Any way to merge this ? Thanks', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657629063/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T09:25:24Z', 'pushed_at': '2026-11-04T20:55:25Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563769, 'stargazers_count': 15769, 'watchers_count': 15769, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15769, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'cedricdelpoux', 'id': 2683300, 'node_id': 'MDQ6VXNlcjI2ODMzMDA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/2683300?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/cedricdelpoux', 'html_url': 'https://github.com/cedricdelpoux', 'followers_url': 'https://api.github.com/users/cedricdelpoux/followers', 'following_url': 'https://api.github.com/users/cedricdelpoux/following{/other_user}', 'gists_url': 'https://api.github.com/users/cedricdelpoux/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/cedricdelpoux/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/cedricdelpoux/subscriptions', 'organizations_url': 'https://api.github.com/users/cedricdelpoux/orgs', 'repos_url': 'https://api.github.com/users/cedricdelpoux/repos', 'events_url': 'https://api.github.com/users/cedricdelpoux/events{/privacy}', 'received_events_url': 'https://api.github.com/users/cedricdelpoux/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T12:02:28.225345 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'edited', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'safe_author': True, 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 24, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-05T12:00:58Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6657447106, 'node_id': 'IC_kwDOALCn2M8AAAABjNCUwg', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T12:00:58Z', 'updated_at': '2026-11-05T12:02:26Z', 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.\r\n\r\nEdit: on the Weston side, here is the log at the time of the crash:\r\n```\r\n[12:58:06.935] libwayland: Data too big for buffer (4092 + 12 > 4096).\r\n[12:58:06.940] libwayland: error in client communication (pid 2849226)\r\n```', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T09:25:24Z', 'pushed_at': '2026-11-04T20:55:25Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563769, 'stargazers_count': 15769, 'watchers_count': 15769, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15769, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T12:01:00.435964 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'linkmauve', 'action': 'created', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'safe_author': True, 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 24, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-05T12:00:58Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6657447106', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6657447106, 'node_id': 'IC_kwDOALCn2M8AAAABjNCUwg', 'user': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T12:00:58Z', 'updated_at': '2026-11-05T12:00:58Z', 'body': 'Sorry about the Shift confusion, I had always configured them differently on xcb, so I didn’t think it was a recent regression.\r\n\r\nAs I was playing Xenoblade Chronicles, Dolphin closed with these messages in the terminal:\r\n```\r\nError sending request for wl_surface.attach: Broken pipe\r\n58:06:956 VideoBackends/Vulkan/VKGfx.cpp:270 I[Video]: Resizing swap chain due to suboptimal/out-of-date\r\n58:06:969 VideoBackends/Vulkan/VulkanLoader.cpp:245 E[Video]: (SelectSurfaceFormat:186) vkGetPhysicalDeviceSurfaceFormatsKHR failed: (-1000000000: VK_ERROR_SURFACE_LOST_KHR)\r\nThe Wayland connection broke. Did the Wayland compositor die?\r\n```\r\n\r\nI had never encountered that on xcb, so it’s possibly a regression too.\r\n\r\nI’m on Mesa f4f170b3423 built a month ago, using radv on a RX\u202f580. I’ll update to latest main and report back if I can reproduce.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6657447106/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-05T09:25:24Z', 'pushed_at': '2026-11-04T20:55:25Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563769, 'stargazers_count': 15769, 'watchers_count': 15769, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15769, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'linkmauve', 'id': 7755816, 'node_id': 'MDQ6VXNlcjc3NTU4MTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7755816?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/linkmauve', 'html_url': 'https://github.com/linkmauve', 'followers_url': 'https://api.github.com/users/linkmauve/followers', 'following_url': 'https://api.github.com/users/linkmauve/following{/other_user}', 'gists_url': 'https://api.github.com/users/linkmauve/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/linkmauve/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/linkmauve/subscriptions', 'organizations_url': 'https://api.github.com/users/linkmauve/orgs', 'repos_url': 'https://api.github.com/users/linkmauve/repos', 'events_url': 'https://api.github.com/users/linkmauve/events{/privacy}', 'received_events_url': 'https://api.github.com/users/linkmauve/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-05T10:52:42.305503 {'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'author': 'michaelackerman419-rgb', 'action': 'created', 'id': 198, 'title': 'linux-buildbot: Generate AppImages', 'url': 'https://github.com/dolphin-emu/sadm/pull/198#issuecomment-6656137343', 'safe_author': False, 'body': '[Uploading url-decode (1).txt…]()\r\n', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198', 'repository_url': 'https://api.github.com/repos/dolphin-emu/sadm', 'labels_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/events', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/198', 'id': 2511309347, 'node_id': 'PR_kwDOALAO3s56tqeA', 'number': 198, 'title': 'linux-buildbot: Generate AppImages', 'user': {'login': 'GT190', 'id': 169302274, 'node_id': 'U_kgDOChdZAg', 'avatar_url': 'https://avatars.githubusercontent.com/u/169302274?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/GT190', 'html_url': 'https://github.com/GT190', 'followers_url': 'https://api.github.com/users/GT190/followers', 'following_url': 'https://api.github.com/users/GT190/following{/other_user}', 'gists_url': 'https://api.github.com/users/GT190/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/GT190/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/GT190/subscriptions', 'organizations_url': 'https://api.github.com/users/GT190/orgs', 'repos_url': 'https://api.github.com/users/GT190/repos', 'events_url': 'https://api.github.com/users/GT190/events{/privacy}', 'received_events_url': 'https://api.github.com/users/GT190/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2024-09-06T23:21:02Z', 'updated_at': '2026-11-05T10:52:39Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/pulls/198', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/198', 'diff_url': 'https://github.com/dolphin-emu/sadm/pull/198.diff', 'patch_url': 'https://github.com/dolphin-emu/sadm/pull/198.patch', 'merged_at': None}, 'body': 'This aims to add AppImage building to Dolphins CI Infrastructure.\r\n\r\nRequires https://github.com/dolphin-emu/dolphin/pull/13055', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/reactions', 'total_count': 2, '+1': 2, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments/6656137343', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/198#issuecomment-6656137343', 'issue_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198', 'id': 6656137343, 'node_id': 'IC_kwDOALAO3s8AAAABjLyYfw', 'user': {'login': 'michaelackerman419-rgb', 'id': 296214017, 'node_id': 'U_kgDOEafeAQ', 'avatar_url': 'https://avatars.githubusercontent.com/u/296214017?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/michaelackerman419-rgb', 'html_url': 'https://github.com/michaelackerman419-rgb', 'followers_url': 'https://api.github.com/users/michaelackerman419-rgb/followers', 'following_url': 'https://api.github.com/users/michaelackerman419-rgb/following{/other_user}', 'gists_url': 'https://api.github.com/users/michaelackerman419-rgb/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/michaelackerman419-rgb/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/michaelackerman419-rgb/subscriptions', 'organizations_url': 'https://api.github.com/users/michaelackerman419-rgb/orgs', 'repos_url': 'https://api.github.com/users/michaelackerman419-rgb/repos', 'events_url': 'https://api.github.com/users/michaelackerman419-rgb/events{/privacy}', 'received_events_url': 'https://api.github.com/users/michaelackerman419-rgb/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-05T10:52:38Z', 'updated_at': '2026-11-05T10:52:38Z', 'body': '[Uploading url-decode (1).txt…]()\r\n', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments/6656137343/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11538142, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTUzODE0Mg==', 'name': 'sadm', 'full_name': 'dolphin-emu/sadm', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/sadm', 'description': 'Scripts and configurations for the Dolphin Emulator infrastructure', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/sadm', 'forks_url': 'https://api.github.com/repos/dolphin-emu/sadm/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/sadm/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/sadm/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/sadm/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/sadm/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/sadm/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/sadm/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/sadm/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/sadm/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/sadm/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/sadm/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/sadm/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/sadm/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/sadm/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/sadm/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/sadm/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/sadm/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/sadm/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/sadm/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/sadm/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/sadm/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/sadm/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/sadm/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/sadm/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/sadm/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/sadm/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/sadm/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/sadm/deployments', 'created_at': '2013-07-19T22:07:05Z', 'updated_at': '2026-11-02T23:28:08Z', 'pushed_at': '2026-11-02T23:28:04Z', 'git_url': 'git://github.com/dolphin-emu/sadm.git', 'ssh_url': 'git@github.com:dolphin-emu/sadm.git', 'clone_url': 'https://github.com/dolphin-emu/sadm.git', 'svn_url': 'https://github.com/dolphin-emu/sadm', 'homepage': '', 'size': 1356, 'stargazers_count': 50, 'watchers_count': 50, 'language': 'Nix', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 42, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 4, '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': 42, 'open_issues': 4, 'watchers': 50, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'michaelackerman419-rgb', 'id': 296214017, 'node_id': 'U_kgDOEafeAQ', 'avatar_url': 'https://avatars.githubusercontent.com/u/296214017?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/michaelackerman419-rgb', 'html_url': 'https://github.com/michaelackerman419-rgb', 'followers_url': 'https://api.github.com/users/michaelackerman419-rgb/followers', 'following_url': 'https://api.github.com/users/michaelackerman419-rgb/following{/other_user}', 'gists_url': 'https://api.github.com/users/michaelackerman419-rgb/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/michaelackerman419-rgb/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/michaelackerman419-rgb/subscriptions', 'organizations_url': 'https://api.github.com/users/michaelackerman419-rgb/orgs', 'repos_url': 'https://api.github.com/users/michaelackerman419-rgb/repos', 'events_url': 'https://api.github.com/users/michaelackerman419-rgb/events{/privacy}', 'received_events_url': 'https://api.github.com/users/michaelackerman419-rgb/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
Recent 'gh_pull_request' events
2026-11-07T15:33:19.435166 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Twilight0', 'action': 'edited', 'id': 14993, 'title': 'VideoCommon: Derive fog depth from clip space on Nouveau', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14993', 'head_ref_name': 'fix/nouveau-frag-coord-depth', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T15:32:52.347381 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Twilight0', 'action': 'opened', 'id': 14993, 'title': 'VideoCommon: Derive fog depth from clip space on Nouveau', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14993', 'head_ref_name': 'fix/nouveau-frag-coord-depth', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T15:32:42.955786 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Twilight0', 'action': 'opened', 'id': 14992, 'title': 'OGL: Fix Nouveau driver detection on modern Mesa', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14992', 'head_ref_name': 'fix/nouveau-driver-detection', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '494c39e23055617e2789df8c0a031bad6e307344', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T04:17:53.718282 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'synchronize', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'head_ref_name': 'wayland-upstream', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T03:18:05.980252 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'synchronize', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'head_ref_name': 'wayland-upstream', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T01:50:12.034762 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'edited', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991', 'head_ref_name': 'fix/ogl-mesa-intel-osd-warning', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T01:49:43.535509 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'edited', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991', 'head_ref_name': 'fix/ogl-mesa-intel-osd-warning', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T01:47:33.167551 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'edited', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991', 'head_ref_name': 'fix/ogl-mesa-intel-osd-warning', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T01:24:00.999317 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'opened', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991', 'head_ref_name': 'fix/ogl-mesa-intel-osd-warning', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-07T00:14:06.579356 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'review_requested', 'id': 14990, 'title': 'CMake: Bundle dolphin-tool on macOS', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14990', 'head_ref_name': 'macos-dolphintool', 'safe_author': True, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'b183f8ea97c29eef5bd5b3832fb7f72697b3dd12', 'merged': False, 'requested_reviewers': [{'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}], 'type': 'gh_pull_request'}
2026-11-06T23:51:34.350893 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'opened', 'id': 14990, 'title': 'CMake: Bundle dolphin-tool on macOS', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14990', 'head_ref_name': 'macos-dolphintool', 'safe_author': True, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'b183f8ea97c29eef5bd5b3832fb7f72697b3dd12', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T23:07:49.692609 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'synchronize', 'id': 14257, 'title': 'Playground PR - Please ignore', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14257', 'head_ref_name': 'testbranch', 'safe_author': True, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'bdaa2725025c8949f1d2fac43f2f355a43a3613b', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T22:37:27.612837 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'synchronize', 'id': 14257, 'title': 'Playground PR - Please ignore', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14257', 'head_ref_name': 'testbranch', 'safe_author': True, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '7238e8e5558feb4c1c9dc65f8c2bc806c81d40b4', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T21:34:44.670776 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'labeled', 'id': 14810, 'title': 'Replace `std::clamp` with `MathUtils::SaturatingCast`', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14810', 'head_ref_name': 'Replace-`std-clamp`-with-`MathUtils-SaturatingCast`', 'safe_author': True, 'base_sha': '4ff214cdd26f135251d2266d676ed72dc1c2f8c9', 'head_sha': 'afc761e282d5ad94240f92ad61889471caf39eb0', 'merged': False, 'requested_reviewers': [{'login': 'phire', 'id': 138484, 'node_id': 'MDQ6VXNlcjEzODQ4NA==', 'avatar_url': 'https://avatars.githubusercontent.com/u/138484?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/phire', 'html_url': 'https://github.com/phire', 'followers_url': 'https://api.github.com/users/phire/followers', 'following_url': 'https://api.github.com/users/phire/following{/other_user}', 'gists_url': 'https://api.github.com/users/phire/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/phire/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/phire/subscriptions', 'organizations_url': 'https://api.github.com/users/phire/orgs', 'repos_url': 'https://api.github.com/users/phire/repos', 'events_url': 'https://api.github.com/users/phire/events{/privacy}', 'received_events_url': 'https://api.github.com/users/phire/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, {'login': 'JosJuice', 'id': 6716818, 'node_id': 'MDQ6VXNlcjY3MTY4MTg=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6716818?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JosJuice', 'html_url': 'https://github.com/JosJuice', 'followers_url': 'https://api.github.com/users/JosJuice/followers', 'following_url': 'https://api.github.com/users/JosJuice/following{/other_user}', 'gists_url': 'https://api.github.com/users/JosJuice/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JosJuice/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JosJuice/subscriptions', 'organizations_url': 'https://api.github.com/users/JosJuice/orgs', 'repos_url': 'https://api.github.com/users/JosJuice/repos', 'events_url': 'https://api.github.com/users/JosJuice/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JosJuice/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}], 'type': 'gh_pull_request'}
2026-11-06T21:19:48.885306 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'labeled', 'id': 13823, 'title': 'externals: allow using watcher header library from the system', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13823', 'head_ref_name': 'dolphin/watcher-lib-from-system', 'safe_author': True, 'base_sha': 'aa45b7fe61c805f428c03bfaeba6e80bdb6b0e59', 'head_sha': '3706d482b0c8a9eef839b90223af4052f20586ad', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T17:58:31.235654 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'closed', 'id': 14989, 'title': 'DSPHLE/Zelda: Keep sync mails that arrive before MAIL_CONTINUE', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14989', 'head_ref_name': 'zelda-sync-before-continue', 'safe_author': True, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'ec6c01381870549050309dd1b5bff820f7bfba6e', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T17:58:26.633654 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'closed', 'id': 14988, 'title': "DSPHLE/AXWii: Reset the depop values of channels a voice isn't mixed into", 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14988', 'head_ref_name': 'axwii-clear-unmixed-depop', 'safe_author': True, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '8b1f2145e738c6628e9985d7f793656f4787b5fe', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T17:55:07.407729 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Zontex', 'action': 'opened', 'id': 14989, 'title': 'DSPHLE/Zelda: Keep sync mails that arrive before MAIL_CONTINUE', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14989', 'head_ref_name': 'zelda-sync-before-continue', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': 'ec6c01381870549050309dd1b5bff820f7bfba6e', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T17:55:03.774532 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Zontex', 'action': 'opened', 'id': 14988, 'title': "DSPHLE/AXWii: Reset the depop values of channels a voice isn't mixed into", 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14988', 'head_ref_name': 'axwii-clear-unmixed-depop', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '8b1f2145e738c6628e9985d7f793656f4787b5fe', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T04:07:49.737062 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoeysRetroHandhelds', 'action': 'synchronize', 'id': 14976, 'title': "WiimoteDevice: Don't send output reports to a null HID source", 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14976', 'head_ref_name': 'wiimote-null-hid-source', 'safe_author': False, 'base_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'head_sha': '4dcc95c37d84037c38973e3136d31280a0339c55', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T03:04:58.805015 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'labeled', 'id': 12757, 'title': 'Readme.md: rework build instructions', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12757', 'head_ref_name': 'build-inst', 'safe_author': True, 'base_sha': '57c890d4fcec1b86d71a8a5ad9c51c548a7bd9cd', 'head_sha': '0e633892fd4ad5e0764629282441799936c402c7', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-06T01:29:38.105808 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'AdmiralCurtiss', 'action': 'closed', 'id': 14968, 'title': 'Core: Bound legacy savestate LZO decompression', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14968', 'head_ref_name': 'state-lzo-bounds', 'safe_author': True, 'base_sha': '96f8181230e6b4445675e7b6c5d913c189f4d7bb', 'head_sha': 'f662e8585f327e03da026f58bc1e7cebb159b8cb', 'merged': True, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-05T22:43:56.260601 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'closed', 'id': 14969, 'title': 'Core: Bound FIFO memory updates', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14969', 'head_ref_name': 'fifo-memory-update-bounds', 'safe_author': True, 'base_sha': '96f8181230e6b4445675e7b6c5d913c189f4d7bb', 'head_sha': 'a95137ad33a80832f206e1c4f8872369b0d1a739', 'merged': True, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-05T22:36:59.387242 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'closed', 'id': 14986, 'title': 'VideoCommon: error if the same asset id is used with a different type', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986', 'head_ref_name': 'invalid_asset', 'safe_author': True, 'base_sha': '96f8181230e6b4445675e7b6c5d913c189f4d7bb', 'head_sha': 'b0c7778406169f21f86937a8083852152811025d', 'merged': True, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-05T22:19:16.397134 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'edited', 'id': 13771, 'title': 'GameINI: Add some speed hacks', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13771', 'head_ref_name': 'gameini-speedhacks', 'safe_author': True, 'base_sha': '06b4c89c518e16c6aa19c2c52a2d96f6e056eb50', 'head_sha': 'fe63d95e02c6b3cca094bb892804f61b8146d56b', 'merged': True, 'requested_reviewers': [], 'type': 'gh_pull_request'}
Recent 'gh_pull_request_comment' events
2026-11-07T04:20:56.808722 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'created', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4500068851', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-07T03:30:51.009156 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499872484', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-07T03:22:03.276024 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'created', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499838467', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-07T03:20:08.821985 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'created', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499832197', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-07T03:19:37.959738 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'created', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499830620', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-07T01:22:38.868140 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499334392', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-07T00:58:15.424612 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499205346', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-07T00:57:08.859529 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499205346', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-07T00:56:07.271211 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499205346', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-07T00:55:31.362278 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499205346', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-07T00:50:56.753971 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14962, 'hash': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499182957', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-05T22:08:07.132697 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'created', 'id': 14986, 'hash': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4486650077', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T22:05:23.520726 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'edited', 'id': 14986, 'hash': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4486623473', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-05T22:05:11.161102 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'created', 'id': 14986, 'hash': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4486623473', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T20:47:08.591543 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14985, 'hash': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485828872', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-05T20:45:23.712975 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14985, 'hash': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485853093', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-05T20:43:41.737262 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14985, 'hash': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485834709', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T20:43:11.318391 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14985, 'hash': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485828872', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T19:36:09.649663 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'created', 'id': 14986, 'hash': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4485118824', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T15:29:06.746602 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14986, 'hash': 'c7845f35e26d52664542a8247c99c8751b498a82', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4482414918', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-05T15:07:02.431290 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14970, 'hash': 'd5b8ad286cf75d1342ba8a4c896e51d28094058e', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14970#discussion_r4482000469', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T14:17:46.853562 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14985, 'hash': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4481534652', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T11:39:17.742131 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14985, 'hash': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4479803522', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T11:39:17.360855 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14985, 'hash': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4479911035', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-05T08:47:56.178815 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14982, 'hash': 'f0240694fdc3e0baadc3e9d3b95672737a0b039c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14982#discussion_r4478336943', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
Recent 'gh_pull_request_review' events
2026-11-07T04:20:56.807802 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'submitted', 'pr_id': 14962, 'pr_title': 'Add Wayland support (Linux only)', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5810049696', 'comments': [{'id': 4500068851, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDmZ8w', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4500068851', 'pull_request_review_id': 5810049696, 'diff_hunk': "@@ -299,8 +340,25 @@ bool SwapChain::CreateSwapChain()\n VkExtent2D size = surface_capabilities.currentExtent;\n if (size.width == UINT32_MAX)\n {\n- size.width = std::max(g_presenter->GetBackbufferWidth(), 1);\n- size.height = std::max(g_presenter->GetBackbufferHeight(), 1);\n+ // The surface doesn't know its size (Wayland), so use the size the host window reported.\n+ // (The presenter doesn't exist yet when the swap chain is first created.)\n+ const auto [requested_width, requested_height] =\n+ g_presenter ? g_presenter->GetRequestedSurfaceSize() : std::pair<u32, u32>{};\n+ if (requested_width != 0 && requested_height != 0)\n+ {\n+ size.width = requested_width;\n+ size.height = requested_height;\n+ }\n+ else if (m_wsi.render_surface_width > 0 && m_wsi.render_surface_height > 0)\n+ {\n+ size.width = m_wsi.render_surface_width;\n+ size.height = m_wsi.render_surface_height;\n+ }\n+ else\n+ {\n+ size.width = g_presenter ? std::max(g_presenter->GetBackbufferWidth(), 1) : 1;", 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'position': 1, 'original_position': 132, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Thanks! `GetBackbufferWidth`/`Height` had no users left, so I removed them. `GetNewSurfaceSize` is now the only size getter.\r\n\r\nI've kept the fields separate because they hold different values:\r\n\r\n- [`m_backbuffer_*`](https://github.com/ellierocks/dolphin/blob/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45/Source/Core/VideoCommon/Present.h#L140-L141) is the size of the swap chain being presented to. The backend sets it in [`SetBackbuffer`](https://github.com/ellierocks/dolphin/blob/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45/Source/Core/VideoCommon/Present.cpp#L327-L337), and the GPU thread reads it without a lock.\r\n- [`m_new_surface_*`](https://github.com/ellierocks/dolphin/blob/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45/Source/Core/VideoCommon/Present.h#L145-L147) is the size the window just asked for. The UI thread writes it under `m_swap_mutex`, the same way `ChangeSurface` handles `m_new_surface_handle`. The backend [picks it up](https://github.com/ellierocks/dolphin/blob/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45/Source/Core/VideoBackends/Vulkan/VKGfx.cpp#L400-L403) and reports the size it actually got.\r\n\r\nIf they were merged, the GPU thread could draw for a size the swap chain doesn't have yet, which is also a data race. `SetBackbuffer` would also stop seeing the size change, so `OnBackbufferSet` would be skipped. If you'd still prefer a single field, I could pass the size along with the resize request instead.", 'created_at': '2026-11-07T04:20:54Z', 'updated_at': '2026-11-07T04:20:54Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4500068851', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'author_association': 'NONE', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4500068851'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4500068851'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4500068851/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4499334392, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-07T03:30:51.007038 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14962, 'pr_title': 'Add Wayland support (Linux only)', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809806361', 'comments': [{'id': 4499872484, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDaa5A', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499872484', 'pull_request_review_id': 5809806361, 'diff_hunk': "@@ -299,8 +340,25 @@ bool SwapChain::CreateSwapChain()\n VkExtent2D size = surface_capabilities.currentExtent;\n if (size.width == UINT32_MAX)\n {\n- size.width = std::max(g_presenter->GetBackbufferWidth(), 1);\n- size.height = std::max(g_presenter->GetBackbufferHeight(), 1);\n+ // The surface doesn't know its size (Wayland), so use the size the host window reported.\n+ // (The presenter doesn't exist yet when the swap chain is first created.)\n+ const auto [requested_width, requested_height] =\n+ g_presenter ? g_presenter->GetRequestedSurfaceSize() : std::pair<u32, u32>{};\n+ if (requested_width != 0 && requested_height != 0)\n+ {\n+ size.width = requested_width;\n+ size.height = requested_height;\n+ }\n+ else if (m_wsi.render_surface_width > 0 && m_wsi.render_surface_height > 0)\n+ {\n+ size.width = m_wsi.render_surface_width;\n+ size.height = m_wsi.render_surface_height;\n+ }\n+ else\n+ {\n+ size.width = g_presenter ? std::max(g_presenter->GetBackbufferWidth(), 1) : 1;", 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'position': 1, 'original_position': 132, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I think you took a step in the right direction but `GetBackbufferWidth`/`Height` and `GetSurfaceSize` still both exist.\r\n\r\n`m_backbuffer_width`/`height` and `m_surface_width`/`height` both exist.\r\n\r\nShouldn't these be merged?", 'created_at': '2026-11-07T03:30:48Z', 'updated_at': '2026-11-07T03:30:49Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499872484', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499872484'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499872484'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499872484/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4499334392, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-07T03:22:03.750062 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'submitted', 'pr_id': 14962, 'pr_title': 'Add Wayland support (Linux only)', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809756138', 'comments': [{'id': 4499838467, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDYWAw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499838467', 'pull_request_review_id': 5809756138, 'diff_hunk': "@@ -299,8 +340,25 @@ bool SwapChain::CreateSwapChain()\n VkExtent2D size = surface_capabilities.currentExtent;\n if (size.width == UINT32_MAX)\n {\n- size.width = std::max(g_presenter->GetBackbufferWidth(), 1);\n- size.height = std::max(g_presenter->GetBackbufferHeight(), 1);\n+ // The surface doesn't know its size (Wayland), so use the size the host window reported.\n+ // (The presenter doesn't exist yet when the swap chain is first created.)\n+ const auto [requested_width, requested_height] =\n+ g_presenter ? g_presenter->GetRequestedSurfaceSize() : std::pair<u32, u32>{};\n+ if (requested_width != 0 && requested_height != 0)\n+ {\n+ size.width = requested_width;\n+ size.height = requested_height;\n+ }\n+ else if (m_wsi.render_surface_width > 0 && m_wsi.render_surface_height > 0)\n+ {\n+ size.width = m_wsi.render_surface_width;\n+ size.height = m_wsi.render_surface_height;\n+ }\n+ else\n+ {\n+ size.width = g_presenter ? std::max(g_presenter->GetBackbufferWidth(), 1) : 1;", 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'position': 1, 'original_position': 132, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Good point, I\'ve combined them. There\'s now one resize path: `Presenter::ResizeSurface(width, height)` takes the size in pixels on every platform. Qt\'s `Host` already had the size, and the NoGUI Win32, X11 and macOS callers now pass the size from their resize events.\r\n\r\nBackends that can query the surface still do, so nothing changes for them. This is in the VideoCommon commit, which I renamed to "Report the window size with surface resizes".', 'created_at': '2026-11-07T03:22:01Z', 'updated_at': '2026-11-07T03:22:01Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499838467', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'author_association': 'NONE', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499838467'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499838467'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499838467/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4499334392, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-07T03:20:10.078977 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'submitted', 'pr_id': 14962, 'pr_title': 'Add Wayland support (Linux only)', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809748693', 'comments': [{'id': 4499832197, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDX9hQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499832197', 'pull_request_review_id': 5809748693, 'diff_hunk': '@@ -84,6 +84,29 @@ VkSurfaceKHR SwapChain::CreateVulkanSurface(VkInstance instance, const WindowSys\n }\n #endif\n \n+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)\n+ if (wsi.type == WindowSystemType::Wayland)\n+ {\n+ VkWaylandSurfaceCreateInfoKHR surface_create_info = {\n+ VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, // VkStructureType sType\n+ nullptr, // const void* pNext\n+ 0, // VkWaylandSurfaceCreateFlagsKHR flags\n+ static_cast<wl_display*>(wsi.display_connection), // struct wl_display* display\n+ static_cast<wl_surface*>(wsi.render_surface) // struct wl_surface* surface', 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'position': 1, 'original_position': 12, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'That was the only struct the branch adds with the end-of-line comments. The others in that file are existing code, so I left them alone.', 'created_at': '2026-11-07T03:20:06Z', 'updated_at': '2026-11-07T03:20:07Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499832197', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'author_association': 'NONE', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499832197'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499832197'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499832197/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4499205346, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-07T03:19:37.554558 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'submitted', 'pr_id': 14962, 'pr_title': 'Add Wayland support (Linux only)', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809746897', 'comments': [{'id': 4499830620, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDX3XA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499830620', 'pull_request_review_id': 5809746897, 'diff_hunk': '@@ -36,6 +40,34 @@\n #include <dwmapi.h>\n #endif\n \n+#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__HAIKU__)\n+#include <qpa/qplatformnativeinterface.h>\n+#endif\n+\n+namespace\n+{\n+bool IsWayland()\n+{\n+ return QGuiApplication::platformName().startsWith(QStringLiteral("wayland"));', 'path': 'Source/Core/DolphinQt/RenderWidget.cpp', 'position': 1, 'original_position': 23, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Moved it to `QtUtils::IsWayland()`. It's added in the RenderWidget commit, where it's first used, and the BalloonTip commit now uses it instead of its own copy.", 'created_at': '2026-11-07T03:19:35Z', 'updated_at': '2026-11-07T03:19:35Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499830620', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'author_association': 'NONE', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499830620'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499830620'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499830620/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4499182957, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-07T02:34:44.570496 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14991, 'pr_title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#pullrequestreview-5809531701', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-07T01:22:38.129448 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14962, 'pr_title': 'Add Wayland support (Linux only)', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809163843', 'comments': [{'id': 4499334392, 'node_id': 'PRRC_kwDOALCn2M8AAAABDC5k-A', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499334392', 'pull_request_review_id': 5809163843, 'diff_hunk': "@@ -299,8 +340,25 @@ bool SwapChain::CreateSwapChain()\n VkExtent2D size = surface_capabilities.currentExtent;\n if (size.width == UINT32_MAX)\n {\n- size.width = std::max(g_presenter->GetBackbufferWidth(), 1);\n- size.height = std::max(g_presenter->GetBackbufferHeight(), 1);\n+ // The surface doesn't know its size (Wayland), so use the size the host window reported.\n+ // (The presenter doesn't exist yet when the swap chain is first created.)\n+ const auto [requested_width, requested_height] =\n+ g_presenter ? g_presenter->GetRequestedSurfaceSize() : std::pair<u32, u32>{};\n+ if (requested_width != 0 && requested_height != 0)\n+ {\n+ size.width = requested_width;\n+ size.height = requested_height;\n+ }\n+ else if (m_wsi.render_surface_width > 0 && m_wsi.render_surface_height > 0)\n+ {\n+ size.width = m_wsi.render_surface_width;\n+ size.height = m_wsi.render_surface_height;\n+ }\n+ else\n+ {\n+ size.width = g_presenter ? std::max(g_presenter->GetBackbufferWidth(), 1) : 1;", 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'position': 132, 'original_position': 132, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'I feel like `GetBackbufferWidth`/`Height` and `GetRequestedSurfaceSize` are redundant and this goes back to my comments of resizing now having two separate code paths which is making things unnecessarily complicated.\n\nI think these two paths can be combined.', 'created_at': '2026-11-07T01:22:34Z', 'updated_at': '2026-11-07T01:22:34Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499334392', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499334392'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499334392'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499334392/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-07T00:55:31.047026 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14962, 'pr_title': 'Add Wayland support (Linux only)', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809011538', 'comments': [{'id': 4499205346, 'node_id': 'PRRC_kwDOALCn2M8AAAABDCxs4g', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499205346', 'pull_request_review_id': 5809011538, 'diff_hunk': '@@ -84,6 +84,29 @@ VkSurfaceKHR SwapChain::CreateVulkanSurface(VkInstance instance, const WindowSys\n }\n #endif\n \n+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)\n+ if (wsi.type == WindowSystemType::Wayland)\n+ {\n+ VkWaylandSurfaceCreateInfoKHR surface_create_info = {\n+ VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, // VkStructureType sType\n+ nullptr, // const void* pNext\n+ 0, // VkWaylandSurfaceCreateFlagsKHR flags\n+ static_cast<wl_display*>(wsi.display_connection), // struct wl_display* display\n+ static_cast<wl_surface*>(wsi.render_surface) // struct wl_surface* surface', 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'position': 12, 'original_position': 12, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I think there's a few places like this where structured bindings would be nicer than the end-of-line comments.\n```suggestion\n .sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,\n .pNext = nullptr,\n .flags = 0,\n .display = static_cast<wl_display*>(wsi.display_connection),\n .surface = static_cast<wl_surface*>(wsi.render_surface),\n```", 'created_at': '2026-11-07T00:55:27Z', 'updated_at': '2026-11-07T00:55:27Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499205346', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499205346'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499205346'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499205346/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-07T00:50:56.752484 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14962, 'pr_title': 'Add Wayland support (Linux only)', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5808985510', 'comments': [{'id': 4499182957, 'node_id': 'PRRC_kwDOALCn2M8AAAABDCwVbQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499182957', 'pull_request_review_id': 5808985510, 'diff_hunk': '@@ -36,6 +40,34 @@\n #include <dwmapi.h>\n #endif\n \n+#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__HAIKU__)\n+#include <qpa/qplatformnativeinterface.h>\n+#endif\n+\n+namespace\n+{\n+bool IsWayland()\n+{\n+ return QGuiApplication::platformName().startsWith(QStringLiteral("wayland"));', 'path': 'Source/Core/DolphinQt/RenderWidget.cpp', 'position': 23, 'original_position': 23, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'This function is also defined in `BaloonTip.cpp`. It probably deserves to be in `QtUtils.h` or something.', 'created_at': '2026-11-07T00:50:52Z', 'updated_at': '2026-11-07T00:50:52Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499182957', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499182957'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499182957'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499182957/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-06T17:42:07.517758 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'submitted', 'pr_id': 14977, 'pr_title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#pullrequestreview-5804459958', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-06T02:28:20.084993 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14713, 'pr_title': 'Fix cheatsmanager crash', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14713#pullrequestreview-5794962948', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-05T22:53:18.446118 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'AdmiralCurtiss', 'action': 'submitted', 'pr_id': 14968, 'pr_title': 'Core: Bound legacy savestate LZO decompression', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14968#pullrequestreview-5793297757', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-05T22:41:13.985305 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'AdmiralCurtiss', 'action': 'submitted', 'pr_id': 14969, 'pr_title': 'Core: Bound FIFO memory updates', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14969#pullrequestreview-5793184520', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-05T22:32:00.824388 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 14970, 'pr_title': 'Use std::move and ostringstream::view to avoid unnecessary copying of strings.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14970#pullrequestreview-5793094361', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-05T22:08:12.688553 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'submitted', 'pr_id': 14986, 'pr_title': 'VideoCommon: error if the same asset id is used with a different type', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#pullrequestreview-5792837612', 'comments': [{'id': 4486650077, 'node_id': 'PRRC_kwDOALCn2M8AAAABC2zY3Q', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4486650077', 'pull_request_review_id': 5792837612, 'diff_hunk': '@@ -50,19 +53,34 @@ class CustomAssetCache\n T* CreateAsset(const CustomAssetLibrary::AssetID& asset_id,\n std::shared_ptr<VideoCommon::CustomAssetLibrary> library, AssetListener* listener)\n {\n- const auto [it, added] =\n- m_asset_id_to_handle.try_emplace(asset_id, m_asset_handle_to_data.size());\n+ const auto [it, added] = m_asset_id_to_handle.try_emplace(\n+ asset_id,\n+ std::pair<std::type_index, std::size_t>{typeid(T), m_asset_handle_to_data.size()});\n if (added)\n {\n AssetData asset_data;\n- asset_data.asset = std::make_unique<T>(std::move(library), asset_id, it->second);\n+ asset_data.asset = std::make_unique<T>(std::move(library), asset_id, it->second.second);\n asset_data.load_request_time = {};\n asset_data.has_load_error = false;\n \n- m_asset_handle_to_data.insert_or_assign(it->second, std::move(asset_data));\n+ m_asset_handle_to_data.insert_or_assign(it->second.second, std::move(asset_data));\n+ }\n+ else if (it->second.first != typeid(T))\n+ {\n+ const auto existing_type =\n+ CWDemangler::demangle(it->second.first.name(), CWDemangler::DemangleOptions())\n+ .value_or(std::string(it->second.first.name()));\n+ const auto new_type = CWDemangler::demangle(typeid(T).name(), CWDemangler::DemangleOptions())\n+ .value_or(std::string(typeid(T).name()));', 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 39, 'original_position': 39, 'commit_id': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'user': {'login': 'JosJuice', 'id': 6716818, 'node_id': 'MDQ6VXNlcjY3MTY4MTg=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6716818?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JosJuice', 'html_url': 'https://github.com/JosJuice', 'followers_url': 'https://api.github.com/users/JosJuice/followers', 'following_url': 'https://api.github.com/users/JosJuice/following{/other_user}', 'gists_url': 'https://api.github.com/users/JosJuice/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JosJuice/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JosJuice/subscriptions', 'organizations_url': 'https://api.github.com/users/JosJuice/orgs', 'repos_url': 'https://api.github.com/users/JosJuice/repos', 'events_url': 'https://api.github.com/users/JosJuice/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JosJuice/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I would say revert the log message back for now so we can get this merged so we're not blocking the hotfix release. If anyone feels strongly about having the type names in here, let's do it in a separate PR.", 'created_at': '2026-11-05T22:08:04Z', 'updated_at': '2026-11-05T22:08:05Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4486650077', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14986', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4486650077'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4486650077'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14986'}}, 'original_commit_id': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4486650077/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4485118824, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-05T22:05:11.108883 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 14986, 'pr_title': 'VideoCommon: error if the same asset id is used with a different type', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#pullrequestreview-5792805240', 'comments': [{'id': 4486623473, 'node_id': 'PRRC_kwDOALCn2M8AAAABC2xw8Q', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4486623473', 'pull_request_review_id': 5792805240, 'diff_hunk': '@@ -50,19 +53,34 @@ class CustomAssetCache\n T* CreateAsset(const CustomAssetLibrary::AssetID& asset_id,\n std::shared_ptr<VideoCommon::CustomAssetLibrary> library, AssetListener* listener)\n {\n- const auto [it, added] =\n- m_asset_id_to_handle.try_emplace(asset_id, m_asset_handle_to_data.size());\n+ const auto [it, added] = m_asset_id_to_handle.try_emplace(\n+ asset_id,\n+ std::pair<std::type_index, std::size_t>{typeid(T), m_asset_handle_to_data.size()});\n if (added)\n {\n AssetData asset_data;\n- asset_data.asset = std::make_unique<T>(std::move(library), asset_id, it->second);\n+ asset_data.asset = std::make_unique<T>(std::move(library), asset_id, it->second.second);\n asset_data.load_request_time = {};\n asset_data.has_load_error = false;\n \n- m_asset_handle_to_data.insert_or_assign(it->second, std::move(asset_data));\n+ m_asset_handle_to_data.insert_or_assign(it->second.second, std::move(asset_data));\n+ }\n+ else if (it->second.first != typeid(T))\n+ {\n+ const auto existing_type =\n+ CWDemangler::demangle(it->second.first.name(), CWDemangler::DemangleOptions())\n+ .value_or(std::string(it->second.first.name()));\n+ const auto new_type = CWDemangler::demangle(typeid(T).name(), CWDemangler::DemangleOptions())\n+ .value_or(std::string(typeid(T).name()));', 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 39, 'original_position': 39, 'commit_id': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'user': {'login': 'iwubcode', 'id': 15224722, 'node_id': 'MDQ6VXNlcjE1MjI0NzIy', 'avatar_url': 'https://avatars.githubusercontent.com/u/15224722?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/iwubcode', 'html_url': 'https://github.com/iwubcode', 'followers_url': 'https://api.github.com/users/iwubcode/followers', 'following_url': 'https://api.github.com/users/iwubcode/following{/other_user}', 'gists_url': 'https://api.github.com/users/iwubcode/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/iwubcode/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/iwubcode/subscriptions', 'organizations_url': 'https://api.github.com/users/iwubcode/orgs', 'repos_url': 'https://api.github.com/users/iwubcode/repos', 'events_url': 'https://api.github.com/users/iwubcode/events{/privacy}', 'received_events_url': 'https://api.github.com/users/iwubcode/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I thought that too. So should I just use unmangled names or revert back to the generic log? I was trying to satisfy @sepalani 's request.", 'created_at': '2026-11-05T22:05:08Z', 'updated_at': '2026-11-05T22:05:09Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4486623473', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14986', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4486623473'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4486623473'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14986'}}, 'original_commit_id': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4486623473/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4485118824, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-05T21:02:07.284428 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14982, 'pr_title': 'Update cubeb to HEAD, use Rust if available', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14982#pullrequestreview-5792071670', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-05T20:45:23.631343 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14985, 'pr_title': 'Common/Logging: Minor cleanups and optimizations.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#pullrequestreview-5791840185', 'comments': [{'id': 4485853093, 'node_id': 'PRRC_kwDOALCn2M8AAAABC2CvpQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485853093', 'pull_request_review_id': 5791840185, 'diff_hunk': '@@ -67,29 +66,24 @@ void GenericLogFmtImpl(LogLevel level, LogType type, const char* file, int line,\n if (instance == nullptr)\n return;\n \n- if (!instance->IsEnabled(type, level))\n+ if (!instance->IsEnabled(type, level) || !instance->IsAnyListenerEnabled())\n return;\n \n const auto message = fmt::vformat(format, args);\n- instance->Log(level, type, file, line, message.c_str());\n+ instance->Log(level, type, file, line, message);\n }\n \n-static size_t DeterminePathCutOffPoint()\n+static consteval size_t GetPathCutOffPoint()\n {\n- constexpr const char* pattern = "/source/core/";\n-#ifdef _WIN32\n- constexpr const char* pattern2 = "\\\\source\\\\core\\\\";\n+ constexpr std::string_view pattern =\n+#if defined(_WIN32)\n+ "Common\\\\Logging\\\\LogManager.cpp";\n+#else\n+ "Common/Logging/LogManager.cpp";', 'path': 'Source/Core/Common/Logging/LogManager.cpp', 'position': 31, 'original_position': 31, 'commit_id': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Yeah, I'm not aware of a place where `_WIN32` would have forward-slashes here.\r\n\r\nThe `static_assert` below should expose them if it does happen.", 'created_at': '2026-11-05T20:45:21Z', 'updated_at': '2026-11-05T20:45:21Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485853093', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14985', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485853093'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485853093'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14985'}}, 'original_commit_id': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485853093/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4479803522, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-05T20:43:41.552091 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14985, 'pr_title': 'Common/Logging: Minor cleanups and optimizations.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#pullrequestreview-5791816343', 'comments': [{'id': 4485834709, 'node_id': 'PRRC_kwDOALCn2M8AAAABC2Bn1Q', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485834709', 'pull_request_review_id': 5791816343, 'diff_hunk': '@@ -207,14 +208,9 @@ std::string LogManager::GetTimestamp()\n const auto now = std::chrono::system_clock::now();\n const auto now_s = std::chrono::floor<std::chrono::seconds>(now);\n const auto now_ms = std::chrono::floor<std::chrono::milliseconds>(now);\n- return fmt::format("{:%M:%S}:{:03}", now_s, (now_ms - now_s).count());\n-}\n \n-void LogManager::LogWithFullPath(LogLevel level, LogType type, const char* file, int line,\n- std::string_view message)\n-{\n- const std::string msg =\n- fmt::format("{} {}:{} {}[{}]: {}\\n", GetTimestamp(), file, line,\n+ std::string msg =', 'path': 'Source/Core/Common/Logging/LogManager.cpp', 'position': 22, 'original_position': 22, 'commit_id': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Sorry, failed rebase. I `std::move` it later on in some future changes.', 'created_at': '2026-11-05T20:43:38Z', 'updated_at': '2026-11-05T20:43:39Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485834709', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14985', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485834709'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485834709'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14985'}}, 'original_commit_id': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485834709/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4481534652, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-05T20:43:11.316434 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14985, 'pr_title': 'Common/Logging: Minor cleanups and optimizations.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14985#pullrequestreview-5791809055', 'comments': [{'id': 4485828872, 'node_id': 'PRRC_kwDOALCn2M8AAAABC2BRCA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485828872', 'pull_request_review_id': 5791809055, 'diff_hunk': '@@ -67,29 +66,24 @@ void GenericLogFmtImpl(LogLevel level, LogType type, const char* file, int line,\n if (instance == nullptr)\n return;\n \n- if (!instance->IsEnabled(type, level))\n+ if (!instance->IsEnabled(type, level) || !instance->IsAnyListenerEnabled())\n return;\n \n const auto message = fmt::vformat(format, args);\n- instance->Log(level, type, file, line, message.c_str());\n+ instance->Log(level, type, file, line, message);\n }\n \n-static size_t DeterminePathCutOffPoint()\n+static consteval size_t GetPathCutOffPoint()\n {\n- constexpr const char* pattern = "/source/core/";\n-#ifdef _WIN32\n- constexpr const char* pattern2 = "\\\\source\\\\core\\\\";\n+ constexpr std::string_view pattern =\n+#if defined(_WIN32)\n+ "Common\\\\Logging\\\\LogManager.cpp";\n+#else\n+ "Common/Logging/LogManager.cpp";\n #endif\n- std::string path = __FILE__;\n- Common::ToLower(&path);', 'path': 'Source/Core/Common/Logging/LogManager.cpp', 'position': 34, 'original_position': 34, 'commit_id': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Yeah, it was made case-insensitive in fbdc239199d838afb5cdd175d9002909686155ed\r\n\r\nIt seems MSVC's `__FILE__` longer wrongly returns lowercase paths these days.\r\nI tested many old compilers on godbolt and they all return sensible things.\r\n\r\nThe `static_assert` below should catch any misbehaving compilers.", 'created_at': '2026-11-05T20:43:08Z', 'updated_at': '2026-11-05T20:43:09Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485828872', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14985', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485828872'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14985#discussion_r4485828872'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14985'}}, 'original_commit_id': '706ad79768d8817f043ff7562bb6a932155e7a9e', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485828872/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4479911035, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-05T19:36:09.646826 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'submitted', 'pr_id': 14986, 'pr_title': 'VideoCommon: error if the same asset id is used with a different type', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#pullrequestreview-5790925038', 'comments': [{'id': 4485118824, 'node_id': 'PRRC_kwDOALCn2M8AAAABC1V7aA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485118824', 'pull_request_review_id': 5790925038, 'diff_hunk': '@@ -50,19 +53,34 @@ class CustomAssetCache\n T* CreateAsset(const CustomAssetLibrary::AssetID& asset_id,\n std::shared_ptr<VideoCommon::CustomAssetLibrary> library, AssetListener* listener)\n {\n- const auto [it, added] =\n- m_asset_id_to_handle.try_emplace(asset_id, m_asset_handle_to_data.size());\n+ const auto [it, added] = m_asset_id_to_handle.try_emplace(\n+ asset_id,\n+ std::pair<std::type_index, std::size_t>{typeid(T), m_asset_handle_to_data.size()});\n if (added)\n {\n AssetData asset_data;\n- asset_data.asset = std::make_unique<T>(std::move(library), asset_id, it->second);\n+ asset_data.asset = std::make_unique<T>(std::move(library), asset_id, it->second.second);\n asset_data.load_request_time = {};\n asset_data.has_load_error = false;\n \n- m_asset_handle_to_data.insert_or_assign(it->second, std::move(asset_data));\n+ m_asset_handle_to_data.insert_or_assign(it->second.second, std::move(asset_data));\n+ }\n+ else if (it->second.first != typeid(T))\n+ {\n+ const auto existing_type =\n+ CWDemangler::demangle(it->second.first.name(), CWDemangler::DemangleOptions())\n+ .value_or(std::string(it->second.first.name()));\n+ const auto new_type = CWDemangler::demangle(typeid(T).name(), CWDemangler::DemangleOptions())\n+ .value_or(std::string(typeid(T).name()));', 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 39, 'original_position': 39, 'commit_id': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'user': {'login': 'JosJuice', 'id': 6716818, 'node_id': 'MDQ6VXNlcjY3MTY4MTg=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6716818?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JosJuice', 'html_url': 'https://github.com/JosJuice', 'followers_url': 'https://api.github.com/users/JosJuice/followers', 'following_url': 'https://api.github.com/users/JosJuice/following{/other_user}', 'gists_url': 'https://api.github.com/users/JosJuice/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JosJuice/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JosJuice/subscriptions', 'organizations_url': 'https://api.github.com/users/JosJuice/orgs', 'repos_url': 'https://api.github.com/users/JosJuice/repos', 'events_url': 'https://api.github.com/users/JosJuice/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JosJuice/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Using CWDemangler here feels sketchy. There's no guarantee that the compiler in use does mangling the same way as CodeWarrior does.", 'created_at': '2026-11-05T19:36:06Z', 'updated_at': '2026-11-05T19:36:07Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4485118824', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14986', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485118824'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4485118824'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14986'}}, 'original_commit_id': 'e196d34c5961e2f057a3de5e98bb81b6d13909ef', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4485118824/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-05T16:25:54.060559 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14986, 'pr_title': 'VideoCommon: error if the same asset id is used with a different type', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#pullrequestreview-5788297524', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-05T16:22:37.477115 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14987, 'pr_title': 'Replace std::chrono::high_resolution_clock usages with a guaranteed monotonic clock.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14987#pullrequestreview-5788248602', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-05T16:12:56.044075 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14969, 'pr_title': 'Core: Bound FIFO memory updates', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14969#pullrequestreview-5788115665', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-05T15:29:06.745474 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'submitted', 'pr_id': 14986, 'pr_title': 'VideoCommon: error if the same asset id is used with a different type', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14986#pullrequestreview-5787483620', 'comments': [{'id': 4482414918, 'node_id': 'PRRC_kwDOALCn2M8AAAABCyw5Rg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4482414918', 'pull_request_review_id': 5787483620, 'diff_hunk': '@@ -50,19 +52,28 @@ class CustomAssetCache\n T* CreateAsset(const CustomAssetLibrary::AssetID& asset_id,\n std::shared_ptr<VideoCommon::CustomAssetLibrary> library, AssetListener* listener)\n {\n- const auto [it, added] =\n- m_asset_id_to_handle.try_emplace(asset_id, m_asset_handle_to_data.size());\n+ const auto [it, added] = m_asset_id_to_handle.try_emplace(\n+ asset_id,\n+ std::pair<std::type_index, std::size_t>{typeid(T), m_asset_handle_to_data.size()});\n if (added)\n {\n AssetData asset_data;\n- asset_data.asset = std::make_unique<T>(std::move(library), asset_id, it->second);\n+ asset_data.asset = std::make_unique<T>(std::move(library), asset_id, it->second.second);\n asset_data.load_request_time = {};\n asset_data.has_load_error = false;\n \n- m_asset_handle_to_data.insert_or_assign(it->second, std::move(asset_data));\n+ m_asset_handle_to_data.insert_or_assign(it->second.second, std::move(asset_data));\n+ }\n+ else if (it->second.first != typeid(T))\n+ {\n+ ERROR_LOG_FMT(\n+ VIDEO,\n+ "Asset \'{}\' already exists in cache but with another type, check your configuration",\n+ asset_id);', 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 37, 'original_position': 37, 'commit_id': 'c7845f35e26d52664542a8247c99c8751b498a82', 'user': {'login': 'sepalani', 'id': 7890055, 'node_id': 'MDQ6VXNlcjc4OTAwNTU=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7890055?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/sepalani', 'html_url': 'https://github.com/sepalani', 'followers_url': 'https://api.github.com/users/sepalani/followers', 'following_url': 'https://api.github.com/users/sepalani/following{/other_user}', 'gists_url': 'https://api.github.com/users/sepalani/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/sepalani/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/sepalani/subscriptions', 'organizations_url': 'https://api.github.com/users/sepalani/orgs', 'repos_url': 'https://api.github.com/users/sepalani/repos', 'events_url': 'https://api.github.com/users/sepalani/events{/privacy}', 'received_events_url': 'https://api.github.com/users/sepalani/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Would it be possible/useful to have both type names in the log message (i.e. the existing one in cache, and the conflicting one)?', 'created_at': '2026-11-05T15:29:02Z', 'updated_at': '2026-11-05T15:29:02Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4482414918', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14986', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4482414918'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14986#discussion_r4482414918'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14986'}}, 'original_commit_id': 'c7845f35e26d52664542a8247c99c8751b498a82', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4482414918/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
Recent 'gh_push' events
2026-11-07T05:45:59.611151 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'OatmealDome', 'before_sha': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'after_sha': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:45:44-05:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['CMake/ScmRevGen.cmake'], 'removed': [], 'message': 'ScmRevGen: Bump version to 2609b', 'url': 'https://github.com/dolphin-emu/dolphin/commit/18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'hash': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7'}], 'base_ref_name': None, 'ref_name': 'release-prep-2609b', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-07T05:42:05.795768 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'OatmealDome', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-23T11:49:22-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/Timer.cpp'], 'removed': [], 'message': 'Revert "msvc: use std::chrono for GetLocalTimeSinceJan1970"\n\nThis reverts commit 86da6c98fbd229d87de7cf8b9c7eb94c16923829.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/24f04c3ba0beca819e0b97e5b4ca830b070f9f74', 'hash': '24f04c3ba0beca819e0b97e5b4ca830b070f9f74'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-08-16T19:35:12+02:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/VideoBackends/Vulkan/VulkanContext.cpp'], 'removed': [], 'message': 'Vulkan: Fetch driverVersion\n\nFor use with DriverDetails.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/7093031c17e931f6be50b8cc1ea94ab055b23eb2', 'hash': '7093031c17e931f6be50b8cc1ea94ab055b23eb2'}, {'author': {'name': 'Starlightbotanist', 'email': 'starlightbotanist@gmail.com', 'date': '2026-10-01T13:28:38-04:00', 'username': 'Starlightbotanist'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/VideoCommon/ConstantManager.h', 'Source/Core/VideoCommon/DriverDetails.cpp', 'Source/Core/VideoCommon/DriverDetails.h', 'Source/Core/VideoCommon/PixelShaderGen.cpp'], 'removed': [], 'message': 'VideoCommon: Work around Adreno TEV zero input miscompilation\n\nSome Qualcomm Android drivers from version 700 onward miscompile\nspecialized TEV pixel shaders when color input A or B is TevColorArg::Zero.\nUse konstLookup[8].rgb, which PixelShaderManager initializes to zero,\nto keep these inputs dependent on a uniform value.\n\nUse the existing driver bug gate for OpenGL and Vulkan. Other inputs and\nunaffected drivers retain their original shader expressions.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/ba77539b53d79a8d7d5a7c6a63a692487ca75d08', 'hash': 'ba77539b53d79a8d7d5a7c6a63a692487ca75d08'}, {'author': {'name': 'debug687', 'email': '313431556+debug687@users.noreply.github.com', 'date': '2026-10-19T21:29:55Z', 'username': 'debug687'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/DolphinQt/Config/ToolTipControls/ToolTipWidget.h'], 'removed': [], 'message': "DolphinQt: Fix crash from stale timer event in ToolTipWidget\n\nLLM generated explaination for the LLM generated commit:\n\nA queued QTimerEvent can be dispatched after the timer was already killed (Qt recycles timer ids), e.g. when a slider is dragged and enter/leave events fire in rapid succession. In that case m_timer_id is empty and dereferencing it in timerEvent() asserts on 'this->_M_is_engaged()' in debug builds, while in release builds it passes a garbage timer id to killTimer().\n\nOnly process the event if it matches the timer we are tracking, which also prevents showing a balloon for a stale event.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/5eaaba5a4328d63ab7fe1147c9478ebda26746ff', 'hash': '5eaaba5a4328d63ab7fe1147c9478ebda26746ff'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-11-04T19:36:38+01:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['Data/Sys/ApprovedInis.json'], 'removed': ['Data/Sys/GameSettings/SDVE41.ini', 'Data/Sys/GameSettings/SDVP41.ini'], 'message': 'Revert "GameINI: Add patches to limit internal framerate in Driver: San Francisco."\n\nThis reverts commit b7e447e21258f103cbaa1bda1ec6b7a4ce3d4e97. The patch\nbreaks the game according to https://bugs.dolphin-emu.org/issues/14156.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/254ae341ec29809a0fcec1f95ffe98da16f1524c', 'hash': '254ae341ec29809a0fcec1f95ffe98da16f1524c'}, {'author': {'name': 'Acts1631', 'email': 'acts1631kjv@proton.me', 'date': '2026-11-01T19:39:01-05:00', 'username': 'acts-1631'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/State.cpp'], 'removed': [], 'message': 'Core: bound legacy savestate LZO decompression\n\nLegacy savestate headers controlled both the compressed input length\nand the decompression buffer size. The input was read into a fixed-size\nbuffer without validation, and the unsafe LZO API could write past its\noutput buffer.\n\nUse the legacy block size as the output capacity, reject oversized\ncompressed blocks, and use the bounds-checking LZO decompressor.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/0b8f943a7e9e8e494319c5c855c26bd0036f497d', 'hash': '0b8f943a7e9e8e494319c5c855c26bd0036f497d'}, {'author': {'name': 'Acts1631', 'email': 'acts1631kjv@proton.me', 'date': '2026-11-01T19:40:27-05:00', 'username': 'acts-1631'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/FifoPlayer/FifoPlayer.cpp'], 'removed': [], 'message': 'Core: bound FIFO memory updates\n\nFIFO logs control each memory update address and data size. Playback\nmasked only the start address into RAM or EXRAM, then copied the\ncomplete update contiguously. An update reaching the end of a mapped\nregion could therefore write beyond host-mapped emulated memory.\n\nResolve the target through MemoryManager and reject updates larger than\nthe remaining valid span before copying them.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/879d19e9db222e907167e01831e8b13bfc693714', 'hash': '879d19e9db222e907167e01831e8b13bfc693714'}, {'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-11-04T19:27:06-06:00', 'username': 'iwubcode'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/VideoCommon/Assets/CustomAssetCache.cpp', 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'Source/Core/VideoCommon/Resources/MaterialResource.cpp', 'Source/Core/VideoCommon/Resources/ShaderResource.cpp', 'Source/Core/VideoCommon/Resources/TextureAndSamplerResource.cpp', 'Source/Core/VideoCommon/Resources/TextureDataResource.cpp'], 'removed': [], 'message': 'VideoCommon: error if the same asset id is used with a different type', 'url': 'https://github.com/dolphin-emu/dolphin/commit/3c8388141325ac6ba9b399f16ee29ba34938e56f', 'hash': '3c8388141325ac6ba9b399f16ee29ba34938e56f'}], 'base_ref_name': None, 'ref_name': 'release-prep-2609b', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-06T01:29:38.305492 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'AdmiralCurtiss', 'before_sha': '322d8b8d8625e32b6ab275de096dbe33ce4427eb', 'after_sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'commits': [{'author': {'name': 'Acts1631', 'email': 'acts1631kjv@proton.me', 'date': '2026-11-01T19:39:01-05:00', 'username': 'acts-1631'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/State.cpp'], 'removed': [], 'message': 'Core: bound legacy savestate LZO decompression\n\nLegacy savestate headers controlled both the compressed input length\nand the decompression buffer size. The input was read into a fixed-size\nbuffer without validation, and the unsafe LZO API could write past its\noutput buffer.\n\nUse the legacy block size as the output capacity, reject oversized\ncompressed blocks, and use the bounds-checking LZO decompressor.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/f662e8585f327e03da026f58bc1e7cebb159b8cb', 'hash': 'f662e8585f327e03da026f58bc1e7cebb159b8cb'}, {'author': {'name': 'Admiral H. Curtiss', 'email': 'pikachu025@gmail.com', 'date': '2026-11-06T02:29:35+01:00', 'username': 'AdmiralCurtiss'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/State.cpp'], 'removed': [], 'message': 'Merge pull request #14968 from acts-1631/state-lzo-bounds\n\nCore: Bound legacy savestate LZO decompression', 'url': 'https://github.com/dolphin-emu/dolphin/commit/4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'hash': '4a70679d0adcd17220568f5c18d2d4005eeea0a2'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-05T22:43:56.251934 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'f599a8e1adf10fcbb51e5796714a32415604f1d8', 'after_sha': '322d8b8d8625e32b6ab275de096dbe33ce4427eb', 'commits': [{'author': {'name': 'Acts1631', 'email': 'acts1631kjv@proton.me', 'date': '2026-11-01T19:40:27-05:00', 'username': 'acts-1631'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/FifoPlayer/FifoPlayer.cpp'], 'removed': [], 'message': 'Core: bound FIFO memory updates\n\nFIFO logs control each memory update address and data size. Playback\nmasked only the start address into RAM or EXRAM, then copied the\ncomplete update contiguously. An update reaching the end of a mapped\nregion could therefore write beyond host-mapped emulated memory.\n\nResolve the target through MemoryManager and reject updates larger than\nthe remaining valid span before copying them.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/a95137ad33a80832f206e1c4f8872369b0d1a739', 'hash': 'a95137ad33a80832f206e1c4f8872369b0d1a739'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-05T16:43:53-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/FifoPlayer/FifoPlayer.cpp'], 'removed': [], 'message': 'Merge pull request #14969 from acts-1631/fifo-memory-update-bounds\n\nCore: Bound FIFO memory updates', 'url': 'https://github.com/dolphin-emu/dolphin/commit/322d8b8d8625e32b6ab275de096dbe33ce4427eb', 'hash': '322d8b8d8625e32b6ab275de096dbe33ce4427eb'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-05T22:36:59.124817 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '96f8181230e6b4445675e7b6c5d913c189f4d7bb', 'after_sha': 'f599a8e1adf10fcbb51e5796714a32415604f1d8', 'commits': [{'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-11-04T19:27:06-06:00', 'username': 'iwubcode'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/VideoCommon/Assets/CustomAssetCache.cpp', 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'Source/Core/VideoCommon/Resources/MaterialResource.cpp', 'Source/Core/VideoCommon/Resources/ShaderResource.cpp', 'Source/Core/VideoCommon/Resources/TextureAndSamplerResource.cpp', 'Source/Core/VideoCommon/Resources/TextureDataResource.cpp'], 'removed': [], 'message': 'VideoCommon: error if the same asset id is used with a different type', 'url': 'https://github.com/dolphin-emu/dolphin/commit/b0c7778406169f21f86937a8083852152811025d', 'hash': 'b0c7778406169f21f86937a8083852152811025d'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-05T16:36:56-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/VideoCommon/Assets/CustomAssetCache.cpp', 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'Source/Core/VideoCommon/Resources/MaterialResource.cpp', 'Source/Core/VideoCommon/Resources/ShaderResource.cpp', 'Source/Core/VideoCommon/Resources/TextureAndSamplerResource.cpp', 'Source/Core/VideoCommon/Resources/TextureDataResource.cpp'], 'removed': [], 'message': 'Merge pull request #14986 from iwubcode/invalid_asset\n\nVideoCommon: error if the same asset id is used with a different type', 'url': 'https://github.com/dolphin-emu/dolphin/commit/f599a8e1adf10fcbb51e5796714a32415604f1d8', 'hash': 'f599a8e1adf10fcbb51e5796714a32415604f1d8'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-05T21:51:30.254879 {'source': 'ghhookparser', 'repo': 'dolphin-emu/central', 'pusher': 'dependabot[bot]', 'before_sha': '11497c1e1dd07c9776ada61ae654537e201963c4', 'after_sha': '0000000000000000000000000000000000000000', 'commits': [], 'base_ref_name': None, 'ref_name': 'dependabot/uv/oauthlib-4.0.0', 'ref_type': 'heads', 'created': False, 'deleted': True, 'forced': False, 'type': 'gh_push'}
2026-11-05T21:51:15.372488 {'source': 'ghhookparser', 'repo': 'dolphin-emu/central', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '254835253784899c97ef73c8c4ad954e4a8fa04e', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-05T21:51:12Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps): bump oauthlib from 3.3.1 to 4.0.1\n\nBumps [oauthlib](https://github.com/oauthlib/oauthlib) from 3.3.1 to 4.0.1.\n- [Release notes](https://github.com/oauthlib/oauthlib/releases)\n- [Changelog](https://github.com/oauthlib/oauthlib/blob/v4.0.1/CHANGELOG.rst)\n- [Commits](https://github.com/oauthlib/oauthlib/compare/v3.3.1...v4.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: oauthlib\n dependency-version: 4.0.1\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/central/commit/254835253784899c97ef73c8c4ad954e4a8fa04e', 'hash': '254835253784899c97ef73c8c4ad954e4a8fa04e'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/oauthlib-4.0.1', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-05T19:32:39.116014 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': '66df2b4e18ae6169f9718b869da334022914e305', 'after_sha': '96f8181230e6b4445675e7b6c5d913c189f4d7bb', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-04T23:29:36-06:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/IOS/Network/Socket.cpp', 'Source/Core/Core/IOS/Network/Socket.h'], 'removed': [], 'message': 'Core/IOS/Network/Socket: Use a guaranteed monotonic clock instead of high_resolution_clock.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/045f3fea555116afa46c071d5f0f48202bfeae6c', 'hash': '045f3fea555116afa46c071d5f0f48202bfeae6c'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-04T23:31:37-06:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/UnitTests/Core/PageFaultTest.cpp'], 'removed': [], 'message': 'UnitTests/Core/PageFaultTest: Use a guaranteed monotonic clock instead of high_resolution_clock.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/52d5313eb3c3a412b4bda0c1c7a5b0b839add8db', 'hash': '52d5313eb3c3a412b4bda0c1c7a5b0b839add8db'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-11-05T20:32:36+01:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/IOS/Network/Socket.cpp', 'Source/Core/Core/IOS/Network/Socket.h', 'Source/UnitTests/Core/PageFaultTest.cpp'], 'removed': [], 'message': 'Merge pull request #14987 from jordan-woyak/no-high_resolution_clock\n\nReplace std::chrono::high_resolution_clock usages with a guaranteed monotonic clock.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/96f8181230e6b4445675e7b6c5d913c189f4d7bb', 'hash': '96f8181230e6b4445675e7b6c5d913c189f4d7bb'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-04T20:55:27.779227 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '584366cb6859f5e371b1314bf0d92bb59d4d1b80', 'after_sha': '66df2b4e18ae6169f9718b869da334022914e305', 'commits': [{'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-11-04T19:36:38+01:00', 'username': 'JosJuice'}, 'distinct': False, 'added': [], 'modified': ['Data/Sys/ApprovedInis.json'], 'removed': ['Data/Sys/GameSettings/SDVE41.ini', 'Data/Sys/GameSettings/SDVP41.ini'], 'message': 'Revert "GameINI: Add patches to limit internal framerate in Driver: San Francisco."\n\nThis reverts commit b7e447e21258f103cbaa1bda1ec6b7a4ce3d4e97. The patch\nbreaks the game according to https://bugs.dolphin-emu.org/issues/14156.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/f4b9fae9f53db163a36b39fde1837421016d6a5f', 'hash': 'f4b9fae9f53db163a36b39fde1837421016d6a5f'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-04T14:55:25-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Data/Sys/ApprovedInis.json'], 'removed': ['Data/Sys/GameSettings/SDVE41.ini', 'Data/Sys/GameSettings/SDVP41.ini'], 'message': 'Merge pull request #14983 from JosJuice/driver-sf-speedhack\n\nRevert "GameINI: Add patches to limit internal framerate in Driver: San Francisco."', 'url': 'https://github.com/dolphin-emu/dolphin/commit/66df2b4e18ae6169f9718b869da334022914e305', 'hash': '66df2b4e18ae6169f9718b869da334022914e305'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-04T18:46:44.742427 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': '112e1a436ae8c81ccd6d002460094172e72a600f', 'after_sha': '584366cb6859f5e371b1314bf0d92bb59d4d1b80', 'commits': [{'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-08-03T20:09:37+02:00', 'username': 'JosJuice'}, 'distinct': False, 'added': [], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.kt'], 'removed': [], 'message': "Android: Clean up setting rescanInProgress in GameFileCacheManager\n\nWe can avoid the workaround of setting rescanInProgress to true in\nload() if we don't set it to false in rescan()'s early exit.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/2514407451d20d3184a30822e50b893a06b5377d', 'hash': '2514407451d20d3184a30822e50b893a06b5377d'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-08-03T18:33:04+02:00', 'username': 'JosJuice'}, 'distinct': False, 'added': [], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.kt'], 'removed': [], 'message': 'Android: Use coroutines in GameFileCacheManager\n\nSome modernization to prepare for an upcoming commit.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/9db6daadd89b2c3f01a434366d7295d43d7faf32', 'hash': '9db6daadd89b2c3f01a434366d7295d43d7faf32'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-08-03T20:17:54+02:00', 'username': 'JosJuice'}, 'distinct': False, 'added': [], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.kt'], 'removed': [], 'message': 'Android: Remove runRescanAfterLoad from GameFileCacheManager\n\nA small additional cleanup made possible by the previous commit.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/c64b02dace5e5e71dae9fbfbd258ffa3562573ef', 'hash': 'c64b02dace5e5e71dae9fbfbd258ffa3562573ef'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-08-03T20:02:47+02:00', 'username': 'JosJuice'}, 'distinct': False, 'added': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/TitleDatabase.kt', 'Source/Android/jni/GameList/TitleDatabase.cpp', 'Source/Android/jni/GameList/TitleDatabase.h'], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameDetailsDialog.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayScreen.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFile.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/SyncProgramsJobService.kt', 'Source/Android/jni/AndroidCommon/IDCache.cpp', 'Source/Android/jni/AndroidCommon/IDCache.h', 'Source/Android/jni/CMakeLists.txt', 'Source/Android/jni/GameList/GameFile.cpp', 'Source/Core/Core/TitleDatabase.cpp', 'Source/Core/Core/TitleDatabase.h'], 'removed': [], 'message': "Android: Use TitleDatabase for game list\n\nBy using the title database we ship with Dolphin, we get more uniform\ngame titles than if we grab what's in each game's opening.bnr file.\nIt also becomes possible for users to supply a custom titles.txt file.\n\nThis has been implemented in DolphinQt since a long time ago.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/49ebb1cfea589e66134039d4ecca911e0e14af43', 'hash': '49ebb1cfea589e66134039d4ecca911e0e14af43'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-11-04T19:46:41+01:00', 'username': 'JosJuice'}, 'distinct': True, 'added': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/TitleDatabase.kt', 'Source/Android/jni/GameList/TitleDatabase.cpp', 'Source/Android/jni/GameList/TitleDatabase.h'], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameDetailsDialog.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/ui/NetplayScreen.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameFile.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/GameFileCacheManager.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/SyncProgramsJobService.kt', 'Source/Android/jni/AndroidCommon/IDCache.cpp', 'Source/Android/jni/AndroidCommon/IDCache.h', 'Source/Android/jni/CMakeLists.txt', 'Source/Android/jni/GameList/GameFile.cpp', 'Source/Core/Core/TitleDatabase.cpp', 'Source/Core/Core/TitleDatabase.h'], 'removed': [], 'message': 'Merge pull request #14794 from JosJuice/android-title-database\n\nAndroid: Use TitleDatabase for game list', 'url': 'https://github.com/dolphin-emu/dolphin/commit/584366cb6859f5e371b1314bf0d92bb59d4d1b80', 'hash': '584366cb6859f5e371b1314bf0d92bb59d4d1b80'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-04T18:46:17.076254 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JosJuice', 'before_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'after_sha': '112e1a436ae8c81ccd6d002460094172e72a600f', 'commits': [{'author': {'name': 'Sepalani', 'email': 'sepalani@hotmail.fr', 'date': '2026-02-19T22:09:33+04:00', 'username': 'sepalani'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/HW/DVD/AMMediaboard.cpp'], 'removed': [], 'message': 'AMMediaboard: Update closesocket error code approriately', 'url': 'https://github.com/dolphin-emu/dolphin/commit/689bf98a343974c3d29b0769def95a4cfadf5828', 'hash': '689bf98a343974c3d29b0769def95a4cfadf5828'}, {'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-11-04T19:46:13+01:00', 'username': 'JosJuice'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/HW/DVD/AMMediaboard.cpp'], 'removed': [], 'message': 'Merge pull request #14404 from sepalani/tri-close\n\nAMMediaboard: Update closesocket error code approriately', 'url': 'https://github.com/dolphin-emu/dolphin/commit/112e1a436ae8c81ccd6d002460094172e72a600f', 'hash': '112e1a436ae8c81ccd6d002460094172e72a600f'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-04T06:32:12.705796 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '051ad48713038eba5bd4bbc13a115c2c8492cfb5', 'after_sha': '0000000000000000000000000000000000000000', 'commits': [], 'base_ref_name': None, 'ref_name': 'dependabot/uv/tornado-6.5.9', 'ref_type': 'heads', 'created': False, 'deleted': True, 'forced': False, 'type': 'gh_push'}
2026-11-04T06:31:59.446238 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '2348b731e93570120a09671f57d82497700b0661', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-04T06:31:56Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': "build(deps): bump tornado from 6.5.8 to 6.6\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n- [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst)\n- [Commits](https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n dependency-version: '6.6'\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>", 'url': 'https://github.com/dolphin-emu/netplay-index/commit/2348b731e93570120a09671f57d82497700b0661', 'hash': '2348b731e93570120a09671f57d82497700b0661'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/tornado-6.6', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-03T04:44:54.249190 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'e8c42467964da77011f7da93a06f9e0a72ca868f', 'after_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-01T21:09:00-06:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/Debugger/BranchWatch.cpp'], 'removed': [], 'message': 'Core/Debugger: Clean up emplace_back calls with use of "parenthesized initialization of aggregates".', 'url': 'https://github.com/dolphin-emu/dolphin/commit/faae54eec7b0b017f5792fb6c9da2fb5143dcecc', 'hash': 'faae54eec7b0b017f5792fb6c9da2fb5143dcecc'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-01T21:09:38-06:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/TypeUtils.h'], 'removed': [], 'message': 'Common/TypeUtils: Remove missing `__cpp_aggregate_paren_init` feature workaround.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/d08bddeaabbfba79f76407018ab02bdf68fa2d46', 'hash': 'd08bddeaabbfba79f76407018ab02bdf68fa2d46'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-02T22:44:51-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/TypeUtils.h', 'Source/Core/Core/Debugger/BranchWatch.cpp'], 'removed': [], 'message': 'Merge pull request #14972 from jordan-woyak/paren-init-aggregate\n\nMinor cleanups with "parenthesized initialization of aggregates".', 'url': 'https://github.com/dolphin-emu/dolphin/commit/df4bd441dec5d6f3cff606eea76f183963e97a44', 'hash': 'df4bd441dec5d6f3cff606eea76f183963e97a44'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T23:28:05.763684 {'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'pusher': 'OatmealDome', 'before_sha': '7dbfc36649ffe79b77c08995556a0e65e3594cf5', 'after_sha': '3465813deb5cf00bc1966c9ea9b79c9deb3b3cf4', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-02T17:47:31-05:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/buildbot/etc/flatpak_linter_exceptions.json'], 'removed': [], 'message': 'buildbot: Add appstream-flathub-manifest-key-not-allowed to Flatpak linter exceptions', 'url': 'https://github.com/dolphin-emu/sadm/commit/1cb7e842aa351c276c9410756c12fce38cb5ca89', 'hash': '1cb7e842aa351c276c9410756c12fce38cb5ca89'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-02T18:07:57-05:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/buildbot/etc/master.cfg'], 'removed': [], 'message': 'buildbot: Disable 7z compression filters on macOS\nThe version of libarchive accessible in the NixOS buildbot environment is not able to parse a filter used on macOS 7z.', 'url': 'https://github.com/dolphin-emu/sadm/commit/3465813deb5cf00bc1966c9ea9b79c9deb3b3cf4', 'hash': '3465813deb5cf00bc1966c9ea9b79c9deb3b3cf4'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T20:16:24.358672 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'after_sha': 'e8c42467964da77011f7da93a06f9e0a72ca868f', 'commits': [{'author': {'name': 'Ma-Rang', 'email': '266874926+Ma-Rang@users.noreply.github.com', 'date': '2026-03-15T17:40:11-05:00', 'username': 'Ma-Rang'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/HW/EXI/EXI_DeviceGecko.cpp', 'Source/Core/Core/HW/EXI/EXI_DeviceGecko.h'], 'removed': [], 'message': 'EXI: Show on-screen error when USB Gecko fails to bind\n\nPreviously, if the USB Gecko server failed to bind to any port in the\n55020-55030 range, it silently returned with no indication to the user.\nNow displays an on-screen message and logs an error.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/18190eb05d46592e12008050805d9c4bbdbb2138', 'hash': '18190eb05d46592e12008050805d9c4bbdbb2138'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-02T14:16:21-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/HW/EXI/EXI_DeviceGecko.cpp', 'Source/Core/Core/HW/EXI/EXI_DeviceGecko.h'], 'removed': [], 'message': 'Merge pull request #14510 from Ma-Rang/pr/gecko-bind-error\n\nEXI: Show on-screen error when USB Gecko fails to bind', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e8c42467964da77011f7da93a06f9e0a72ca868f', 'hash': 'e8c42467964da77011f7da93a06f9e0a72ca868f'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T19:46:26.202898 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'd182533d363eae8c753d37cfad4107930da2019a', 'after_sha': 'a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'commits': [{'author': {'name': 'Joshua Vandaële', 'email': 'joshua@vandaele.software', 'date': '2026-11-02T18:36:38+01:00', 'username': 'JoshuaVandaele'}, 'distinct': False, 'added': [], 'modified': ['Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml.in'], 'removed': [], 'message': 'Flatpak: Do not set the flathub::manifest tag\n\nThis resolves the recent build failures introduced by https://github.com/flathub-infra/flatpak-builder-lint/commit/df1c8f992aa5620fc473efe6c6e96b9f3b11e1ba. Nothing seems to break with it being removed.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/2833c12b20e5c3d929f8c27a7742ecadb8a669b4', 'hash': '2833c12b20e5c3d929f8c27a7742ecadb8a669b4'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-02T13:46:23-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml.in'], 'removed': [], 'message': 'Merge pull request #14975 from JoshuaVandaele/flathub-manifest\n\nFlatpak: Do not set the flathub::manifest tag', 'url': 'https://github.com/dolphin-emu/dolphin/commit/a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'hash': 'a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T03:35:02.890014 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'adf85af9fe9785e891fa99141f6d34907a2d9f12', 'after_sha': 'd182533d363eae8c753d37cfad4107930da2019a', 'commits': [{'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-10-04T20:04:35-05:00', 'username': 'iwubcode'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/VideoBackends/D3D/D3DVertexManager.cpp', 'Source/Core/VideoBackends/D3D/D3DVertexManager.h', 'Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp', 'Source/Core/VideoBackends/D3D12/D3D12VertexManager.h', 'Source/Core/VideoBackends/OGL/OGLVertexManager.cpp', 'Source/Core/VideoBackends/OGL/OGLVertexManager.h', 'Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp', 'Source/Core/VideoBackends/Vulkan/VKVertexManager.h', 'Source/Core/VideoCommon/VertexManagerBase.cpp', 'Source/Core/VideoCommon/VertexManagerBase.h'], 'removed': [], 'message': 'VideoBackends / VideoCommon: split draw calls into separate commit and render steps', 'url': 'https://github.com/dolphin-emu/dolphin/commit/4fb368cf36342d6b354d93b8711ef7f2e1881023', 'hash': '4fb368cf36342d6b354d93b8711ef7f2e1881023'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-01T21:35:00-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/VideoBackends/D3D/D3DVertexManager.cpp', 'Source/Core/VideoBackends/D3D/D3DVertexManager.h', 'Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp', 'Source/Core/VideoBackends/D3D12/D3D12VertexManager.h', 'Source/Core/VideoBackends/OGL/OGLVertexManager.cpp', 'Source/Core/VideoBackends/OGL/OGLVertexManager.h', 'Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp', 'Source/Core/VideoBackends/Vulkan/VKVertexManager.h', 'Source/Core/VideoCommon/VertexManagerBase.cpp', 'Source/Core/VideoCommon/VertexManagerBase.h'], 'removed': [], 'message': 'Merge pull request #14916 from iwubcode/vertex_manager_draw_refactor\n\nVideoBackends / VideoCommon: split draw calls into separate commit and render functions', 'url': 'https://github.com/dolphin-emu/dolphin/commit/d182533d363eae8c753d37cfad4107930da2019a', 'hash': 'd182533d363eae8c753d37cfad4107930da2019a'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T03:33:58.610819 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'after_sha': 'adf85af9fe9785e891fa99141f6d34907a2d9f12', 'commits': [{'author': {'name': 'debug687', 'email': '313431556+debug687@users.noreply.github.com', 'date': '2026-10-19T21:29:55Z', 'username': 'debug687'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/DolphinQt/Config/ToolTipControls/ToolTipWidget.h'], 'removed': [], 'message': "DolphinQt: Fix crash from stale timer event in ToolTipWidget\n\nLLM generated explaination for the LLM generated commit:\n\nA queued QTimerEvent can be dispatched after the timer was already killed (Qt recycles timer ids), e.g. when a slider is dragged and enter/leave events fire in rapid succession. In that case m_timer_id is empty and dereferencing it in timerEvent() asserts on 'this->_M_is_engaged()' in debug builds, while in release builds it passes a garbage timer id to killTimer().\n\nOnly process the event if it matches the timer we are tracking, which also prevents showing a balloon for a stale event.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/cee23f7af6b1624da3e7190e5a18a282d82d567c', 'hash': 'cee23f7af6b1624da3e7190e5a18a282d82d567c'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-01T21:33:55-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/DolphinQt/Config/ToolTipControls/ToolTipWidget.h'], 'removed': [], 'message': 'Merge pull request #14941 from debug687/patch-1\n\nDolphinQt: Fix crash from stale timer event in ToolTipWidget', 'url': 'https://github.com/dolphin-emu/dolphin/commit/adf85af9fe9785e891fa99141f6d34907a2d9f12', 'hash': 'adf85af9fe9785e891fa99141f6d34907a2d9f12'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-01T19:59:48.261662 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JMC47', 'before_sha': 'e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'after_sha': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'commits': [{'author': {'name': 'Joshua Vandaële', 'email': 'joshua@vandaele.software', 'date': '2026-06-28T08:33:40+02:00', 'username': 'JoshuaVandaele'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/MathUtil.h', 'Source/Core/Common/Matrix.cpp', 'Source/Core/Common/Matrix.h', 'Source/Core/Core/HW/WiimoteEmu/Camera.h', 'Source/Core/Core/HW/WiimoteEmu/Dynamics.cpp', 'Source/Core/Core/HW/WiimoteEmu/MotionPlus.cpp', 'Source/Core/Core/HW/WiimoteEmu/MotionPlus.h', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp', 'Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUCursor.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp', 'Source/Core/InputCommon/ControllerEmu/StickGate.cpp', 'Source/Core/InputCommon/ControllerInterface/DualShockUDPClient/DualShockUDPClient.cpp', 'Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp', 'Source/Core/InputCommon/ControllerInterface/SteamDeck/SteamDeck.cpp', 'Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp', 'Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp', 'Source/Core/VideoBackends/Software/NativeVertexFormat.h', 'Source/UnitTests/Common/MathUtilTest.cpp'], 'removed': [], 'message': "MathUtil: C++20/23 modernisations\n\nI've also created DegreesToRadians/RadiansToDegrees utility functions since there was a lot of repeated code", 'url': 'https://github.com/dolphin-emu/dolphin/commit/6dcb0817a2cd1a507dbf5e3c42bf13623b5b5cae', 'hash': '6dcb0817a2cd1a507dbf5e3c42bf13623b5b5cae'}, {'author': {'name': 'JMC47', 'email': 'JMC4789@gmail.com', 'date': '2026-11-01T14:59:45-05:00', 'username': 'JMC47'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/MathUtil.h', 'Source/Core/Common/Matrix.cpp', 'Source/Core/Common/Matrix.h', 'Source/Core/Core/HW/WiimoteEmu/Camera.h', 'Source/Core/Core/HW/WiimoteEmu/Dynamics.cpp', 'Source/Core/Core/HW/WiimoteEmu/MotionPlus.cpp', 'Source/Core/Core/HW/WiimoteEmu/MotionPlus.h', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp', 'Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUCursor.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp', 'Source/Core/InputCommon/ControllerEmu/StickGate.cpp', 'Source/Core/InputCommon/ControllerInterface/DualShockUDPClient/DualShockUDPClient.cpp', 'Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp', 'Source/Core/InputCommon/ControllerInterface/SteamDeck/SteamDeck.cpp', 'Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp', 'Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp', 'Source/Core/VideoBackends/Software/NativeVertexFormat.h', 'Source/UnitTests/Common/MathUtilTest.cpp'], 'removed': [], 'message': 'Merge pull request #14704 from JoshuaVandaele/mathutils-23\n\nMathUtil: C++20/23 modernisations', 'url': 'https://github.com/dolphin-emu/dolphin/commit/833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'hash': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-01T19:59:20.079691 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JMC47', 'before_sha': '86d554802d7560acf12b5c5a2b3acb344069b5ce', 'after_sha': 'e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2025-10-11T18:29:51-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/AudioCommon/Mixer.cpp', 'Source/Core/AudioCommon/Mixer.h', 'Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp', 'Source/Core/Core/HW/WiimoteEmu/Speaker.cpp', 'Source/Core/Core/HW/WiimoteEmu/Speaker.h', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.h'], 'removed': [], 'message': 'HW/Wiimote: Speaker logic accuracy fixes, comments, and code cleanups.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/baa05e32f1db379e98bbd48b35b2aaa2e6fa4e94', 'hash': 'baa05e32f1db379e98bbd48b35b2aaa2e6fa4e94'}, {'author': {'name': 'JMC47', 'email': 'JMC4789@gmail.com', 'date': '2026-11-01T14:59:17-05:00', 'username': 'JMC47'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/AudioCommon/Mixer.cpp', 'Source/Core/AudioCommon/Mixer.h', 'Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp', 'Source/Core/Core/HW/WiimoteEmu/Speaker.cpp', 'Source/Core/Core/HW/WiimoteEmu/Speaker.h', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.h'], 'removed': [], 'message': 'Merge pull request #14006 from jordan-woyak/speaker-accuracy\n\nHW/Wiimote: Speaker logic accuracy fixes, comments, and code cleanups.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'hash': 'e6ed14488a84eeaae1856e1d7c0dd457dceb49ce'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-01T05:11:01.565986 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'iwubcode', 'before_sha': '613db73aeb2c086a816592df2fb193d73130101b', 'after_sha': '86d554802d7560acf12b5c5a2b3acb344069b5ce', 'commits': [{'author': {'name': 'CySlaytor', 'email': 'cyslaytor@gmail.com', 'date': '2026-11-01T01:29:01Z', 'username': 'CySlaytor'}, 'distinct': False, 'added': ['Data/Sys/Sounds/info.wav', 'Data/Sys/Sounds/lb.wav', 'Data/Sys/Sounds/lbcancel.wav', 'Data/Sys/Sounds/lbsubmit.wav', 'Data/Sys/Sounds/unlock.wav'], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt', 'Source/Android/app/src/main/res/values/strings.xml', 'Source/Core/AudioCommon/Mixer.cpp', 'Source/Core/AudioCommon/Mixer.h', 'Source/Core/AudioCommon/WaveFile.cpp', 'Source/Core/AudioCommon/WaveFile.h', 'Source/Core/Common/CommonPaths.h', 'Source/Core/Common/FileUtil.cpp', 'Source/Core/Common/FileUtil.h', 'Source/Core/Core/AchievementManager.cpp', 'Source/Core/Core/AchievementManager.h', 'Source/Core/Core/Config/AchievementSettings.cpp', 'Source/Core/Core/Config/AchievementSettings.h', 'Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp', 'Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.h'], 'removed': [], 'message': 'feat(retroachievements): implement achievement notification sounds', 'url': 'https://github.com/dolphin-emu/dolphin/commit/56076f403dc8fc3a560e4b6c0811fba3d49ad880', 'hash': '56076f403dc8fc3a560e4b6c0811fba3d49ad880'}, {'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-11-01T00:10:58-05:00', 'username': 'iwubcode'}, 'distinct': True, 'added': ['Data/Sys/Sounds/info.wav', 'Data/Sys/Sounds/lb.wav', 'Data/Sys/Sounds/lbcancel.wav', 'Data/Sys/Sounds/lbsubmit.wav', 'Data/Sys/Sounds/unlock.wav'], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt', 'Source/Android/app/src/main/res/values/strings.xml', 'Source/Core/AudioCommon/Mixer.cpp', 'Source/Core/AudioCommon/Mixer.h', 'Source/Core/AudioCommon/WaveFile.cpp', 'Source/Core/AudioCommon/WaveFile.h', 'Source/Core/Common/CommonPaths.h', 'Source/Core/Common/FileUtil.cpp', 'Source/Core/Common/FileUtil.h', 'Source/Core/Core/AchievementManager.cpp', 'Source/Core/Core/AchievementManager.h', 'Source/Core/Core/Config/AchievementSettings.cpp', 'Source/Core/Core/Config/AchievementSettings.h', 'Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp', 'Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.h'], 'removed': [], 'message': 'Merge pull request #14596 from CySlaytor/master\n\nfeat(retroachievements): implement achievement notification sounds', 'url': 'https://github.com/dolphin-emu/dolphin/commit/86d554802d7560acf12b5c5a2b3acb344069b5ce', 'hash': '86d554802d7560acf12b5c5a2b3acb344069b5ce'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-01T04:58:33.096478 {'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'pusher': 'OatmealDome', 'before_sha': '855912ebde8af3da1c27fd82351104a095734af0', 'after_sha': '7dbfc36649ffe79b77c08995556a0e65e3594cf5', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-01T00:19:40-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['flake.lock'], 'removed': [], 'message': "flake.lock: Update\n\nFlake lock file updates:\n\n• Updated input 'colmena':\n 'github:nix-community/colmena/e269669b798a361a521029d5d15e289124a15038?narHash=sha256-jp%2BgxgnCdMhpBxxBnOoHW5fRVc%2BC5rKCFHsP/afoh3w%3D' (2026-10-09)\n → 'github:nix-community/colmena/fc7d67ed1cd52af91415f92ba92b543bc7245f25?narHash=sha256-Dv4jEQeqvPpicC3H8mLTyqtTgXp23p4HPiCMKqKWXFA%3D' (2026-10-30)\n• Updated input 'colmena/nixpkgs':\n 'github:nixos/nixpkgs/494ce7fd23ff6a5dff39e1fb11e9b6f2ac74bf25?narHash=sha256-Ni0LBydzaCi8oek12r4mVreuFHqYlM1eTD6SfiENKfw%3D' (2026-10-05)\n → 'github:nixos/nixpkgs/3ec636362e1816bc2f0888fa0fa2c69f1bc9e504?narHash=sha256-rZLrzrC6i%2BjnTAlvPZHogKDulY7WWDEv9hJeHieO7Zw%3D' (2026-10-23)\n• Updated input 'colmena/stable':\n 'github:nixos/nixpkgs/1f623a1582190fa3ba3f5cea25aba925055d43eb?narHash=sha256-q8KNN9Zs/nau7Cc8%2Bf5ZGJeMXmCQqm5%2Bbgy5m/uYxmw%3D' (2026-10-05)\n → 'github:nixos/nixpkgs/89844ad35df40e876cb6d0a3a319fbf65ea4b984?narHash=sha256-TMADWku9ye40AQKGMdSoCpByfqaL7kbO%2Bo8E46Q7CLQ%3D' (2026-10-26)\n• Updated input 'nixpkgs':\n 'github:NixOS/nixpkgs/da6dc0e7b26060f2f71ce3ef7088fb56ee44fa36?narHash=sha256-MlvRfa1O5Cqc2/a%2BgG%2Bl9TSuowEoCKCmrJ1d9oAVm0I%3D' (2026-10-21)\n → 'github:NixOS/nixpkgs/fa1373130d5a21c040a47c5dbe1913d59ed91808?narHash=sha256-HzgjxrLY4AEc0044ZuM5CHbLSWLZgDlay1idmzvvpJs%3D' (2026-10-31)\n• Updated input 'pyproject-build-systems':\n 'github:pyproject-nix/build-system-pkgs/a17819c85163988e063806ffc4f6d2716bc8ead8?narHash=sha256-mGOkvueuMGSRiD75ccxFzfEvSlIU9ztjFluHMKOtogY%3D' (2026-10-20)\n → 'github:pyproject-nix/build-system-pkgs/6171a3484937e14cdf2316ed9a60f1c27b6cb71e?narHash=sha256-wLiau0yOPONjWSoQNC%2B%2BuirtJqx2D4hGAWSKU0TfKGc%3D' (2026-10-29)\n• Updated input 'pyproject-build-systems/uv2nix':\n 'github:pyproject-nix/uv2nix/7aba73a3d85454f1118f8cf9de97979b4d26bcac?narHash=sha256-PMtgvHuGijoIAtPtrBm7kJOI6fxzX4LYPAIK%2BQVGY%2BY%3D' (2026-10-16)\n → 'github:pyproject-nix/uv2nix/c361746c7d630d98b972378290547c8d35542a7a?narHash=sha256-3CE1CEwprYlHRlRVkXDkhqec0jjF9Cti7tdk8vVDsCM%3D' (2026-10-29)\n• Updated input 'pyproject-nix':\n 'github:pyproject-nix/pyproject.nix/ddc400a6883b042646d0940e65971bb7f7e96107?narHash=sha256-vcCAvhtA7hG%2B/gOge29hYHy7I/dLkIsr5nLx4sFEQic%3D' (2026-10-10)\n → 'github:pyproject-nix/pyproject.nix/bf7d4b1d6de61db02fd4e748395634f03006e5de?narHash=sha256-NPWgb6H4arnWyTKvYIys5U0xqd5QY74Z%2BlyTJA%2B7XGY%3D' (2026-10-29)\n• Updated input 'rust-overlay':\n 'github:oxalica/rust-overlay/5f267b7f323a4d6df0b9c0e3eaa043cbe85386f2?narHash=sha256-E8zFJilWlORqzIUJizyhZ/0WKBOizuM6s1nRSgPRomo%3D' (2026-10-22)\n → 'github:oxalica/rust-overlay/6ecf534a7c16e7c969f26838fdd8c93597ae93f3?narHash=sha256-%2BsgVNI2c67di%2BXIeMaz5KSei4T65kX68s5Nl0E5Gzbc%3D' (2026-10-31)\n• Updated input 'uv2nix':\n 'github:pyproject-nix/uv2nix/0fdaa03ea3c3c16dbb1fe4d69108f07227a4b42d?narHash=sha256-UWo7wDPi00YXOI1Io7g4vGKuCSPJ863kHJVDzsgqtoM%3D' (2026-10-22)\n → 'github:pyproject-nix/uv2nix/c361746c7d630d98b972378290547c8d35542a7a?narHash=sha256-3CE1CEwprYlHRlRVkXDkhqec0jjF9Cti7tdk8vVDsCM%3D' (2026-10-29)", 'url': 'https://github.com/dolphin-emu/sadm/commit/7dbfc36649ffe79b77c08995556a0e65e3594cf5', 'hash': '7dbfc36649ffe79b77c08995556a0e65e3594cf5'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
Recent 'internal_log' events
2026-11-07T15:42:57.865495 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:42:55.924909 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:39:10.267164 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-07T15:39:09.895622 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-07T15:37:55.924559 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:37:54.286242 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:32:54.285819 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:32:52.722847 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:32:52.713127 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/buildbot.py', 'lineno': 131, 'msg': 'PR %s mergeable: %s (%s)', 'args': "(14993, True, 'clean')", 'type': 'internal_log'}
2026-11-07T15:32:43.354420 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/buildbot.py', 'lineno': 131, 'msg': 'PR %s mergeable: %s (%s)', 'args': "(14992, True, 'clean')", 'type': 'internal_log'}
2026-11-07T15:29:09.895342 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-07T15:29:09.575107 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-07T15:27:52.722493 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:27:51.131955 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:22:51.131632 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:22:49.552634 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:19:09.574876 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-07T15:19:09.258378 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-07T15:17:49.552286 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:17:48.131522 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:12:48.131112 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-07T15:12:46.560388 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-07T15:09:09.258167 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-07T15:09:08.912229 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-07T15:07:46.559981 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
Recent 'issue' events
2026-11-07T00:41:57.616931 {'source': 'redmine', 'new': False, 'update': 8, 'issue': 14062, 'title': 'Pokemon XD Gale of Darkness 4 Player GBA connection issue', 'author': 'Billiard26', 'type': 'issue'}
2026-11-06T23:23:34.211246 {'source': 'redmine', 'new': False, 'update': 7, 'issue': 14062, 'title': 'Pokemon XD Gale of Darkness 4 Player GBA connection issue', 'author': 'Thundermeter', 'type': 'issue'}
2026-11-06T21:31:48.142748 {'source': 'redmine', 'new': False, 'update': 6, 'issue': 14062, 'title': 'Pokemon XD Gale of Darkness 4 Player GBA connection issue', 'author': 'Billiard26', 'type': 'issue'}
2026-11-06T21:18:56.972157 {'source': 'redmine', 'new': False, 'update': 5, 'issue': 14062, 'title': 'Pokemon XD Gale of Darkness 4 Player GBA connection issue', 'author': 'Thundermeter', 'type': 'issue'}
2026-11-05T21:46:09.066923 {'source': 'redmine', 'new': False, 'update': 5, 'issue': 13910, 'title': 'Driver: San Francisco - Issues related to uncapped framerate', 'author': 'Billiard26', 'type': 'issue'}
2026-11-05T21:41:31.297355 {'source': 'redmine', 'new': False, 'update': 6, 'issue': 14156, 'title': 'Driver: San Francisco patch causes freeze while loading the opening mission', 'author': 'Billiard26', 'type': 'issue'}
2026-11-05T10:27:52.798052 {'source': 'redmine', 'new': False, 'update': 5, 'issue': 14156, 'title': 'Driver: San Francisco patch causes freeze while loading the opening mission', 'author': 'flacs', 'type': 'issue'}
2026-11-05T08:20:13.960247 {'source': 'redmine', 'new': False, 'update': 7, 'issue': 7192, 'title': 'Ocarina of Time Master Quest "Video Previews" freeze up [cpuTiming]', 'author': 'vrixchival', 'type': 'issue'}
2026-11-05T00:59:17.379109 {'source': 'redmine', 'new': False, 'update': 4, 'issue': 13910, 'title': 'Driver: San Francisco - Issues related to uncapped framerate', 'author': 'KostaSaizo7', 'type': 'issue'}
2026-11-04T20:18:39.284836 {'source': 'redmine', 'new': False, 'update': 4, 'issue': 14156, 'title': 'Driver: San Francisco patch causes freeze while loading the opening mission', 'author': 'Billiard26', 'type': 'issue'}
2026-11-03T20:32:48.650741 {'source': 'redmine', 'new': False, 'update': 2, 'issue': 14175, 'title': 'Retroachievements', 'author': 'JosJuice', 'type': 'issue'}
2026-11-03T16:24:33.637252 {'source': 'redmine', 'new': True, 'update': 0, 'issue': 14175, 'title': 'Retroachievements', 'author': 'Cloudgaming7882', 'type': 'issue'}
2026-11-03T13:37:27.061515 {'source': 'redmine', 'new': False, 'update': 3, 'issue': 14172, 'title': "Can't select any interface language other than English on macOS since v2609", 'author': 'OatmealDome', 'type': 'issue'}
2026-11-01T09:16:43.791855 {'source': 'redmine', 'new': False, 'update': 2, 'issue': 14174, 'title': 'Paper mario the thousand year door ', 'author': 'JosJuice', 'type': 'issue'}
Recent 'new_dev_version' events
2026-11-07T05:46:00.589839 {'source': 'repomanager', 'hash': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'branch': 'release-prep-2609b', 'shortrev': '2609a-9', 'author': 'OatmealDome', 'message': 'ScmRevGen: Bump version to 2609b', 'url': 'https://github.com/dolphin-emu/dolphin/commit/18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'type': 'new_dev_version'}
2026-11-07T05:42:07.448281 {'source': 'repomanager', 'hash': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'branch': 'release-prep-2609b', 'shortrev': '2609a-8', 'author': 'iwubcode', 'message': 'VideoCommon: error if the same asset id is used with a different type', 'url': 'https://github.com/dolphin-emu/dolphin/commit/3c8388141325ac6ba9b399f16ee29ba34938e56f', 'type': 'new_dev_version'}
2026-11-07T05:42:07.358835 {'source': 'repomanager', 'hash': '879d19e9db222e907167e01831e8b13bfc693714', 'branch': 'release-prep-2609b', 'shortrev': '2609a-7', 'author': 'Acts1631', 'message': 'Core: bound FIFO memory updates\n\nFIFO logs control each memory update address and data size. Playback\nmasked only the start address into RAM or EXRAM, then copied the\ncomplete update contiguously. An update reaching the end of a mapped\nregion could therefore write beyond host-mapped emulated memory.\n\nResolve the target through MemoryManager and reject updates larger than\nthe remaining valid span before copying them.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/879d19e9db222e907167e01831e8b13bfc693714', 'type': 'new_dev_version'}
2026-11-07T05:42:07.278991 {'source': 'repomanager', 'hash': '0b8f943a7e9e8e494319c5c855c26bd0036f497d', 'branch': 'release-prep-2609b', 'shortrev': '2609a-6', 'author': 'Acts1631', 'message': 'Core: bound legacy savestate LZO decompression\n\nLegacy savestate headers controlled both the compressed input length\nand the decompression buffer size. The input was read into a fixed-size\nbuffer without validation, and the unsafe LZO API could write past its\noutput buffer.\n\nUse the legacy block size as the output capacity, reject oversized\ncompressed blocks, and use the bounds-checking LZO decompressor.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/0b8f943a7e9e8e494319c5c855c26bd0036f497d', 'type': 'new_dev_version'}
2026-11-07T05:42:07.200199 {'source': 'repomanager', 'hash': '254ae341ec29809a0fcec1f95ffe98da16f1524c', 'branch': 'release-prep-2609b', 'shortrev': '2609a-5', 'author': 'JosJuice', 'message': 'Revert "GameINI: Add patches to limit internal framerate in Driver: San Francisco."\n\nThis reverts commit b7e447e21258f103cbaa1bda1ec6b7a4ce3d4e97. The patch\nbreaks the game according to https://bugs.dolphin-emu.org/issues/14156.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/254ae341ec29809a0fcec1f95ffe98da16f1524c', 'type': 'new_dev_version'}
2026-11-07T05:42:07.114692 {'source': 'repomanager', 'hash': '5eaaba5a4328d63ab7fe1147c9478ebda26746ff', 'branch': 'release-prep-2609b', 'shortrev': '2609a-4', 'author': 'debug687', 'message': "DolphinQt: Fix crash from stale timer event in ToolTipWidget\n\nLLM generated explaination for the LLM generated commit:\n\nA queued QTimerEvent can be dispatched after the timer was already killed (Qt recycles timer ids), e.g. when a slider is dragged and enter/leave events fire in rapid succession. In that case m_timer_id is empty and dereferencing it in timerEvent() asserts on 'this->_M_is_engaged()' in debug builds, while in release builds it passes a garbage timer id to killTimer().\n\nOnly process the event if it matches the timer we are tracking, which also prevents showing a balloon for a stale event.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/5eaaba5a4328d63ab7fe1147c9478ebda26746ff', 'type': 'new_dev_version'}
2026-11-07T05:42:07.022761 {'source': 'repomanager', 'hash': 'ba77539b53d79a8d7d5a7c6a63a692487ca75d08', 'branch': 'release-prep-2609b', 'shortrev': '2609a-3', 'author': 'Starlightbotanist', 'message': 'VideoCommon: Work around Adreno TEV zero input miscompilation\n\nSome Qualcomm Android drivers from version 700 onward miscompile\nspecialized TEV pixel shaders when color input A or B is TevColorArg::Zero.\nUse konstLookup[8].rgb, which PixelShaderManager initializes to zero,\nto keep these inputs dependent on a uniform value.\n\nUse the existing driver bug gate for OpenGL and Vulkan. Other inputs and\nunaffected drivers retain their original shader expressions.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/ba77539b53d79a8d7d5a7c6a63a692487ca75d08', 'type': 'new_dev_version'}
2026-11-07T05:42:06.940819 {'source': 'repomanager', 'hash': '7093031c17e931f6be50b8cc1ea94ab055b23eb2', 'branch': 'release-prep-2609b', 'shortrev': '2609a-2', 'author': 'JosJuice', 'message': 'Vulkan: Fetch driverVersion\n\nFor use with DriverDetails.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/7093031c17e931f6be50b8cc1ea94ab055b23eb2', 'type': 'new_dev_version'}
2026-11-07T05:42:06.857347 {'source': 'repomanager', 'hash': '24f04c3ba0beca819e0b97e5b4ca830b070f9f74', 'branch': 'release-prep-2609b', 'shortrev': '2609a-1', 'author': 'OatmealDome', 'message': 'Revert "msvc: use std::chrono for GetLocalTimeSinceJan1970"\n\nThis reverts commit 86da6c98fbd229d87de7cf8b9c7eb94c16923829.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/24f04c3ba0beca819e0b97e5b4ca830b070f9f74', 'type': 'new_dev_version'}
2026-11-06T01:29:39.776291 {'source': 'repomanager', 'hash': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'branch': 'master', 'shortrev': '2609-191', 'author': 'Admiral H. Curtiss', 'message': 'Merge pull request #14968 from acts-1631/state-lzo-bounds\n\nCore: Bound legacy savestate LZO decompression', 'url': 'https://github.com/dolphin-emu/dolphin/commit/4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'type': 'new_dev_version'}
2026-11-05T22:43:57.763105 {'source': 'repomanager', 'hash': '322d8b8d8625e32b6ab275de096dbe33ce4427eb', 'branch': 'master', 'shortrev': '2609-189', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14969 from acts-1631/fifo-memory-update-bounds\n\nCore: Bound FIFO memory updates', 'url': 'https://github.com/dolphin-emu/dolphin/commit/322d8b8d8625e32b6ab275de096dbe33ce4427eb', 'type': 'new_dev_version'}
2026-11-05T22:37:01.084932 {'source': 'repomanager', 'hash': 'f599a8e1adf10fcbb51e5796714a32415604f1d8', 'branch': 'master', 'shortrev': '2609-187', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14986 from iwubcode/invalid_asset\n\nVideoCommon: error if the same asset id is used with a different type', 'url': 'https://github.com/dolphin-emu/dolphin/commit/f599a8e1adf10fcbb51e5796714a32415604f1d8', 'type': 'new_dev_version'}
2026-11-05T19:32:40.697127 {'source': 'repomanager', 'hash': '96f8181230e6b4445675e7b6c5d913c189f4d7bb', 'branch': 'master', 'shortrev': '2609-185', 'author': 'JosJuice', 'message': 'Merge pull request #14987 from jordan-woyak/no-high_resolution_clock\n\nReplace std::chrono::high_resolution_clock usages with a guaranteed monotonic clock.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/96f8181230e6b4445675e7b6c5d913c189f4d7bb', 'type': 'new_dev_version'}
2026-11-04T20:55:29.551874 {'source': 'repomanager', 'hash': '66df2b4e18ae6169f9718b869da334022914e305', 'branch': 'master', 'shortrev': '2609-182', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14983 from JosJuice/driver-sf-speedhack\n\nRevert "GameINI: Add patches to limit internal framerate in Driver: San Francisco."', 'url': 'https://github.com/dolphin-emu/dolphin/commit/66df2b4e18ae6169f9718b869da334022914e305', 'type': 'new_dev_version'}
2026-11-04T18:46:46.787973 {'source': 'repomanager', 'hash': '584366cb6859f5e371b1314bf0d92bb59d4d1b80', 'branch': 'master', 'shortrev': '2609-180', 'author': 'JosJuice', 'message': 'Merge pull request #14794 from JosJuice/android-title-database\n\nAndroid: Use TitleDatabase for game list', 'url': 'https://github.com/dolphin-emu/dolphin/commit/584366cb6859f5e371b1314bf0d92bb59d4d1b80', 'type': 'new_dev_version'}
2026-11-04T18:46:19.374120 {'source': 'repomanager', 'hash': '112e1a436ae8c81ccd6d002460094172e72a600f', 'branch': 'master', 'shortrev': '2609-175', 'author': 'JosJuice', 'message': 'Merge pull request #14404 from sepalani/tri-close\n\nAMMediaboard: Update closesocket error code approriately', 'url': 'https://github.com/dolphin-emu/dolphin/commit/112e1a436ae8c81ccd6d002460094172e72a600f', 'type': 'new_dev_version'}
2026-11-03T04:44:55.957645 {'source': 'repomanager', 'hash': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'branch': 'master', 'shortrev': '2609-173', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14972 from jordan-woyak/paren-init-aggregate\n\nMinor cleanups with "parenthesized initialization of aggregates".', 'url': 'https://github.com/dolphin-emu/dolphin/commit/df4bd441dec5d6f3cff606eea76f183963e97a44', 'type': 'new_dev_version'}
2026-11-02T20:16:26.534624 {'source': 'repomanager', 'hash': 'e8c42467964da77011f7da93a06f9e0a72ca868f', 'branch': 'master', 'shortrev': '2609-170', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14510 from Ma-Rang/pr/gecko-bind-error\n\nEXI: Show on-screen error when USB Gecko fails to bind', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e8c42467964da77011f7da93a06f9e0a72ca868f', 'type': 'new_dev_version'}
2026-11-02T19:46:28.060984 {'source': 'repomanager', 'hash': 'a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'branch': 'master', 'shortrev': '2609-168', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14975 from JoshuaVandaele/flathub-manifest\n\nFlatpak: Do not set the flathub::manifest tag', 'url': 'https://github.com/dolphin-emu/dolphin/commit/a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'type': 'new_dev_version'}
2026-11-02T03:35:04.879103 {'source': 'repomanager', 'hash': 'd182533d363eae8c753d37cfad4107930da2019a', 'branch': 'master', 'shortrev': '2609-166', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14916 from iwubcode/vertex_manager_draw_refactor\n\nVideoBackends / VideoCommon: split draw calls into separate commit and render functions', 'url': 'https://github.com/dolphin-emu/dolphin/commit/d182533d363eae8c753d37cfad4107930da2019a', 'type': 'new_dev_version'}
2026-11-02T03:34:00.690923 {'source': 'repomanager', 'hash': 'adf85af9fe9785e891fa99141f6d34907a2d9f12', 'branch': 'master', 'shortrev': '2609-164', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14941 from debug687/patch-1\n\nDolphinQt: Fix crash from stale timer event in ToolTipWidget', 'url': 'https://github.com/dolphin-emu/dolphin/commit/adf85af9fe9785e891fa99141f6d34907a2d9f12', 'type': 'new_dev_version'}
2026-11-01T19:59:49.726721 {'source': 'repomanager', 'hash': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'branch': 'master', 'shortrev': '2609-162', 'author': 'JMC47', 'message': 'Merge pull request #14704 from JoshuaVandaele/mathutils-23\n\nMathUtil: C++20/23 modernisations', 'url': 'https://github.com/dolphin-emu/dolphin/commit/833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'type': 'new_dev_version'}
2026-11-01T19:59:21.576066 {'source': 'repomanager', 'hash': 'e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'branch': 'master', 'shortrev': '2609-160', 'author': 'JMC47', 'message': 'Merge pull request #14006 from jordan-woyak/speaker-accuracy\n\nHW/Wiimote: Speaker logic accuracy fixes, comments, and code cleanups.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'type': 'new_dev_version'}
2026-11-01T05:11:03.397581 {'source': 'repomanager', 'hash': '86d554802d7560acf12b5c5a2b3acb344069b5ce', 'branch': 'master', 'shortrev': '2609-158', 'author': 'iwubcode', 'message': 'Merge pull request #14596 from CySlaytor/master\n\nfeat(retroachievements): implement achievement notification sounds', 'url': 'https://github.com/dolphin-emu/dolphin/commit/86d554802d7560acf12b5c5a2b3acb344069b5ce', 'type': 'new_dev_version'}
Recent 'notification' events
2026-11-07T15:33:23.473091 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14993 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
2026-11-07T15:33:23.473019 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14992 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
2026-11-07T15:33:19.435430 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303T\ufeffwilight0\x03 edited pull request #14993: VideoCommon: Derive fog depth from clip space on Nouveau (\x0306master\x03...\x0306fix/nouveau-frag-coord-depth\x03): \x1f\x0302https://dolp.in/pr14993\x03\x1f', 'type': 'notification'}
2026-11-07T15:32:52.348276 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303T\ufeffwilight0\x03 opened pull request #14993: VideoCommon: Derive fog depth from clip space on Nouveau (\x0306master\x03...\x0306fix/nouveau-frag-coord-depth\x03): \x1f\x0302https://dolp.in/pr14993\x03\x1f', 'type': 'notification'}
2026-11-07T15:32:42.956096 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303T\ufeffwilight0\x03 opened pull request #14992: OGL: Fix Nouveau driver detection on modern Mesa (\x0306master\x03...\x0306fix/nouveau-driver-detection\x03): \x1f\x0302https://dolp.in/pr14992\x03\x1f', 'type': 'notification'}
2026-11-07T15:26:54.665793 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303i\ufeffnfirit\x03 edited a comment on #14962 (Add Wayland support (Linux only)): \x1f\x0302https://dolp.in/pr14962#issuecomment-6708769494\x03\x1f', 'type': 'notification'}
2026-11-07T15:18:52.737215 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303i\ufeffnfirit\x03 edited a comment on #14962 (Add Wayland support (Linux only)): \x1f\x0302https://dolp.in/pr14962#issuecomment-6708769494\x03\x1f', 'type': 'notification'}
2026-11-07T15:17:27.582489 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303i\ufeffnfirit\x03 edited a comment on #14962 (Add Wayland support (Linux only)): \x1f\x0302https://dolp.in/pr14962#issuecomment-6708769494\x03\x1f', 'type': 'notification'}
2026-11-07T15:11:20.813192 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303i\ufeffnfirit\x03 commented on #14962 (Add Wayland support (Linux only)): \x1f\x0302https://dolp.in/pr14962#issuecomment-6708769494\x03\x1f', 'type': 'notification'}
2026-11-07T06:17:18.265932 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303T\ufeffilka\x03 commented on #14991 (OGL: Warn about Intel Mesa GPU hangs on Linux): \x1f\x0302https://dolp.in/pr14991#issuecomment-6703268470\x03\x1f', 'type': 'notification'}
2026-11-07T05:45:59.611663 {'source': 'notifications', 'msg': '18a9d1 by \x0303O\ufeffatmealDome\x03 [\x03090\x03|\x03091\x03|\x03040\x03] \x1f\x0302https://dolp.in/r18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7\x03\x1f ScmRevGen: Bump version to 2609b', 'type': 'notification'}
2026-11-07T05:45:59.611548 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x1f\x03] \x0303O\ufeffatmealDome\x03 pushed \x021\x02 new commit to \x0306release-prep-2609b\x03', 'type': 'notification'}
2026-11-07T05:42:05.796573 {'source': 'notifications', 'msg': '... and 4 more commits', 'type': 'notification'}
2026-11-07T05:42:05.796555 {'source': 'notifications', 'msg': '5eaaba by \x0303d\ufeffebug687\x03 [\x03090\x03|\x03091\x03|\x03040\x03] \x1f\x0302https://dolp.in/r5eaaba5a4328d63ab7fe1147c9478ebda26746ff\x03\x1f DolphinQt: Fix crash from stale timer event in ToolTipWidget', 'type': 'notification'}
2026-11-07T05:42:05.796464 {'source': 'notifications', 'msg': 'ba7753 by \x0303S\ufefftarlightbotanist\x03 [\x03090\x03|\x03094\x03|\x03040\x03] \x1f\x0302https://dolp.in/rba77539b53d79a8d7d5a7c6a63a692487ca75d08\x03\x1f VideoCommon: Work around Adreno TEV zero input miscompilation', 'type': 'notification'}
2026-11-07T05:42:05.796370 {'source': 'notifications', 'msg': '709303 by \x0303J\ufeffosJuice\x03 [\x03090\x03|\x03091\x03|\x03040\x03] \x1f\x0302https://dolp.in/r7093031c17e931f6be50b8cc1ea94ab055b23eb2\x03\x1f Vulkan: Fetch driverVersion', 'type': 'notification'}
2026-11-07T05:42:05.796264 {'source': 'notifications', 'msg': '24f04c by \x0303O\ufeffatmealDome\x03 [\x03090\x03|\x03091\x03|\x03040\x03] \x1f\x0302https://dolp.in/r24f04c3ba0beca819e0b97e5b4ca830b070f9f74\x03\x1f Revert "msvc: use std::chrono for GetLocalTimeSinceJan1970"', 'type': 'notification'}
2026-11-07T05:42:05.796154 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x1f\x03] \x0303O\ufeffatmealDome\x03 created \x0306release-prep-2609b\x03 +\x028\x02 new commits', 'type': 'notification'}
2026-11-07T04:20:56.808952 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303e\ufeffllierocks\x03 commented on #14962 63a36f: \x1f\x0302https://dolp.in/pr14962#discussion_r4500068851\x03\x1f', 'type': 'notification'}
2026-11-07T04:18:24.761971 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14962 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
2026-11-07T04:17:53.719192 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303e\ufeffllierocks\x03 synchronized pull request #14962: Add Wayland support (Linux only) (\x0306master\x03...\x0306wayland-upstream\x03): \x1f\x0302https://dolp.in/pr14962\x03\x1f', 'type': 'notification'}
2026-11-07T03:31:07.889845 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303e\ufeffllierocks\x03 commented on #14962 (Add Wayland support (Linux only)): \x1f\x0302https://dolp.in/pr14962#issuecomment-6701679169\x03\x1f', 'type': 'notification'}
2026-11-07T03:30:51.007320 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on pull request #14962 (Add Wayland support (Linux only)): \x1f\x0302https://dolp.in/pr14962#pullrequestreview-5809806361\x03\x1f', 'type': 'notification'}
2026-11-07T03:22:03.276328 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303e\ufeffllierocks\x03 commented on #14962 63a36f: \x1f\x0302https://dolp.in/pr14962#discussion_r4499838467\x03\x1f', 'type': 'notification'}
2026-11-07T03:20:10.079227 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303e\ufeffllierocks\x03 commented on pull request #14962 (Add Wayland support (Linux only)): \x1f\x0302https://dolp.in/pr14962#pullrequestreview-5809748693\x03\x1f', 'type': 'notification'}
Recent 'pull_request_fifoci_status' events
2026-11-07T13:06:18.568523 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14962, 'type': 'pull_request_fifoci_status'}
2026-11-07T12:53:39.325055 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14962, 'type': 'pull_request_fifoci_status'}
2026-11-07T12:36:12.884473 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14962, 'type': 'pull_request_fifoci_status'}
2026-11-07T12:17:03.098610 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14962, 'type': 'pull_request_fifoci_status'}
2026-11-07T12:06:01.860022 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14962, 'type': 'pull_request_fifoci_status'}
2026-11-07T03:02:56.572347 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14991, 'type': 'pull_request_fifoci_status'}
2026-11-07T02:57:54.332350 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14991, 'type': 'pull_request_fifoci_status'}
2026-11-07T02:54:59.185736 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14991, 'type': 'pull_request_fifoci_status'}
2026-11-07T02:46:55.447438 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14991, 'type': 'pull_request_fifoci_status'}
2026-11-07T02:42:25.092395 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'fa2a22682522402e2cc38de60182ab2271fde0e1', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14991, 'type': 'pull_request_fifoci_status'}
2026-11-07T00:27:21.892345 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'b183f8ea97c29eef5bd5b3832fb7f72697b3dd12', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14990, 'type': 'pull_request_fifoci_status'}
2026-11-07T00:26:15.785441 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'b183f8ea97c29eef5bd5b3832fb7f72697b3dd12', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14990, 'type': 'pull_request_fifoci_status'}
2026-11-07T00:19:51.855632 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'b183f8ea97c29eef5bd5b3832fb7f72697b3dd12', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14990, 'type': 'pull_request_fifoci_status'}
2026-11-07T00:15:15.027124 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'b183f8ea97c29eef5bd5b3832fb7f72697b3dd12', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14990, 'type': 'pull_request_fifoci_status'}
2026-11-07T00:07:54.361487 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'b183f8ea97c29eef5bd5b3832fb7f72697b3dd12', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14990, 'type': 'pull_request_fifoci_status'}
2026-11-06T23:48:34.460117 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'bdaa2725025c8949f1d2fac43f2f355a43a3613b', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14257, 'type': 'pull_request_fifoci_status'}
2026-11-06T23:41:48.012427 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'bdaa2725025c8949f1d2fac43f2f355a43a3613b', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14257, 'type': 'pull_request_fifoci_status'}
2026-11-06T23:41:13.485558 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'bdaa2725025c8949f1d2fac43f2f355a43a3613b', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14257, 'type': 'pull_request_fifoci_status'}
2026-11-06T23:30:51.595909 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'bdaa2725025c8949f1d2fac43f2f355a43a3613b', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14257, 'type': 'pull_request_fifoci_status'}
2026-11-06T23:29:08.866446 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'bdaa2725025c8949f1d2fac43f2f355a43a3613b', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14257, 'type': 'pull_request_fifoci_status'}
2026-11-06T23:15:10.306618 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '7238e8e5558feb4c1c9dc65f8c2bc806c81d40b4', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14257, 'type': 'pull_request_fifoci_status'}
2026-11-06T23:06:55.425611 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '7238e8e5558feb4c1c9dc65f8c2bc806c81d40b4', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14257, 'type': 'pull_request_fifoci_status'}
2026-11-06T22:54:25.557633 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '7238e8e5558feb4c1c9dc65f8c2bc806c81d40b4', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14257, 'type': 'pull_request_fifoci_status'}
2026-11-06T02:37:36.617884 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e2aa668a27ae64f75f128425f6e82644e4af4fb3', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14923, 'type': 'pull_request_fifoci_status'}
2026-11-06T02:36:11.734139 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'e2aa668a27ae64f75f128425f6e82644e4af4fb3', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14923, 'type': 'pull_request_fifoci_status'}
Recent 'raw_bb_hook' events
2026-11-07T13:06:17.742972 {'source': 'webserver', 'raw': {'buildid': 197262, 'number': 9613, 'builderid': 35, 'buildrequestid': 197946, 'workerid': 5, 'masterid': 1, 'started_at': 1794056018, 'complete_at': 1794056777, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builderid': [35, 'Builder'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9613, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'shortrev': ['c6c1c4', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-sw-lin-mesa', 'Worker'], 'branchname': ['pr-14962', 'Trigger'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'codebase': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'pr_id': [14962, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'branch': ['refs/pull/14962/head', 'Build']}, 'buildrequest': {'buildrequestid': 197946, 'buildsetid': 44285, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1794056018, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794053139, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44285, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794053139, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197254, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197254, 'number': 10962, 'builderid': 27, 'buildrequestid': 197937, 'workerid': 10, 'masterid': 1, 'started_at': 1794051749, 'complete_at': 1794053139, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 35, 'name': 'pr-fifoci-sw-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/35/builds/9613'}, 'type': 'raw_bb_hook'}
2026-11-07T12:53:38.627965 {'source': 'webserver', 'raw': {'buildid': 197262, 'number': 9613, 'builderid': 35, 'buildrequestid': 197946, 'workerid': 5, 'masterid': 1, 'started_at': 1794056018, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'builderid': [35, 'Builder'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9613, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'shortrev': ['c6c1c4', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-14962', 'Trigger'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'codebase': ['', 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'pr_id': [14962, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'branch': ['refs/pull/14962/head', 'Build']}, 'buildrequest': {'buildrequestid': 197946, 'buildsetid': 44285, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1794056018, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794053139, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44285, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794053139, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197254, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197254, 'number': 10962, 'builderid': 27, 'buildrequestid': 197937, 'workerid': 10, 'masterid': 1, 'started_at': 1794051749, 'complete_at': 1794053139, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 35, 'name': 'pr-fifoci-sw-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/35/builds/9613'}, 'type': 'raw_bb_hook'}
2026-11-07T12:53:38.615540 {'source': 'webserver', 'raw': {'buildid': 197261, 'number': 5600, 'builderid': 41, 'buildrequestid': 197947, 'workerid': 5, 'masterid': 1, 'started_at': 1794054971, 'complete_at': 1794056018, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14962', 'Trigger'], 'branch': ['refs/pull/14962/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'repository': ['', 'Build'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'pr_id': [14962, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [41, 'Builder'], 'buildnumber': [5600, 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'shortrev': ['c6c1c4', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'project': ['', 'Build'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-vk-lin-mesa', 'Worker']}, 'buildrequest': {'buildrequestid': 197947, 'buildsetid': 44285, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1794054971, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794053139, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44285, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794053139, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197254, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197254, 'number': 10962, 'builderid': 27, 'buildrequestid': 197937, 'workerid': 10, 'masterid': 1, 'started_at': 1794051749, 'complete_at': 1794053139, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 41, 'name': 'pr-fifoci-vk-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/41/builds/5600'}, 'type': 'raw_bb_hook'}
2026-11-07T12:36:12.137829 {'source': 'webserver', 'raw': {'buildid': 197261, 'number': 5600, 'builderid': 41, 'buildrequestid': 197947, 'workerid': 5, 'masterid': 1, 'started_at': 1794054971, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14962', 'Trigger'], 'branch': ['refs/pull/14962/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'repository': ['', 'Build'], 'pr_id': [14962, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [41, 'Builder'], 'buildnumber': [5600, 'Build'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'shortrev': ['c6c1c4', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197947, 'buildsetid': 44285, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1794054971, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794053139, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44285, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794053139, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197254, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197254, 'number': 10962, 'builderid': 27, 'buildrequestid': 197937, 'workerid': 10, 'masterid': 1, 'started_at': 1794051749, 'complete_at': 1794053139, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 41, 'name': 'pr-fifoci-vk-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/41/builds/5600'}, 'type': 'raw_bb_hook'}
2026-11-07T12:36:12.080941 {'source': 'webserver', 'raw': {'buildid': 197257, 'number': 9614, 'builderid': 10, 'buildrequestid': 197945, 'workerid': 5, 'masterid': 1, 'started_at': 1794053139, 'complete_at': 1794054971, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [10, 'Builder'], 'buildnumber': [9614, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-ogl-lin-mesa', 'Worker'], 'pr_id': [14962, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'branchname': ['pr-14962', 'Trigger'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'shortrev': ['c6c1c4', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'branch': ['refs/pull/14962/head', 'Build']}, 'buildrequest': {'buildrequestid': 197945, 'buildsetid': 44285, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1794053139, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794053139, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44285, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794053139, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197254, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197254, 'number': 10962, 'builderid': 27, 'buildrequestid': 197937, 'workerid': 10, 'masterid': 1, 'started_at': 1794051749, 'complete_at': 1794053139, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 10, 'name': 'pr-fifoci-ogl-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/10/builds/9614'}, 'type': 'raw_bb_hook'}
2026-11-07T12:25:10.861072 {'source': 'webserver', 'raw': {'buildid': 197259, 'number': 10961, 'builderid': 1, 'buildrequestid': 197929, 'workerid': 9, 'masterid': 1, 'started_at': 1794053225, 'complete_at': 1794054310, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'builderid': [1, 'Builder'], 'workername': ['debian', 'Worker'], 'buildnumber': [10961, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'builddir': ['/buildbot/pr-deb-dbg-x64', 'Worker'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'warnings-count': [4, 'WarningCountingShellCommand'], 'branchname': ['pr-14962', 'Change'], 'pr_id': [14962, 'Change'], 'branch': ['refs/pull/14962/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197929, 'buildsetid': 44283, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1794053225, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 1, 'name': 'pr-deb-dbg-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/1/builds/10961'}, 'type': 'raw_bb_hook'}
2026-11-07T12:23:21.495924 {'source': 'webserver', 'raw': {'buildid': 197260, 'number': 10970, 'builderid': 31, 'buildrequestid': 197938, 'workerid': 4, 'masterid': 1, 'started_at': 1794053576, 'complete_at': 1794054201, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14962', 'Change'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'pr_id': [14962, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'build_url': ['https://dl.dolphin-emu.org/prs/1b/6e/pr-14962-dolphin-latest-dbg-x64.7z', 'SetProperty'], 'builderid': [31, 'Builder'], 'buildnumber': [10970, 'Build'], 'project': ['', 'Build'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/14962/head', 'Build'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-dbg-x64', 'Worker'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197938, 'buildsetid': 44283, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1794053576, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 31, 'name': 'pr-win-dbg-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/31/builds/10970'}, 'type': 'raw_bb_hook'}
2026-11-07T12:17:02.354053 {'source': 'webserver', 'raw': {'buildid': 197258, 'number': 9300, 'builderid': 19, 'buildrequestid': 197943, 'workerid': 8, 'masterid': 1, 'started_at': 1794053160, 'complete_at': 1794053821, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'shortrev': ['c6c1c4', 'Trigger'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mvk-osx-m1', 'Worker'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'warnings-count': [114, 'WarningCountingShellCommand'], 'pr_id': [14962, 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [19, 'Builder'], 'buildnumber': [9300, 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'branchname': ['pr-14962', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'branch': ['refs/pull/14962/head', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197943, 'buildsetid': 44284, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1794053160, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794052507, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44284, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794052507, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197253, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197253, 'number': 10981, 'builderid': 7, 'buildrequestid': 197931, 'workerid': 8, 'masterid': 1, 'started_at': 1794051741, 'complete_at': 1794052507, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 19, 'name': 'pr-fifoci-mvk-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/19/builds/9300'}, 'type': 'raw_bb_hook'}
2026-11-07T12:12:56.670672 {'source': 'webserver', 'raw': {'buildid': 197260, 'number': 10970, 'builderid': 31, 'buildrequestid': 197938, 'workerid': 4, 'masterid': 1, 'started_at': 1794053576, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14962', 'Change'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'pr_id': [14962, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'buildnumber': [10970, 'Build'], 'project': ['', 'Build'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/14962/head', 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197938, 'buildsetid': 44283, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1794053576, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 31, 'name': 'pr-win-dbg-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/31/builds/10970'}, 'type': 'raw_bb_hook'}
2026-11-07T12:12:56.660962 {'source': 'webserver', 'raw': {'buildid': 197256, 'number': 10963, 'builderid': 2, 'buildrequestid': 197930, 'workerid': 4, 'masterid': 1, 'started_at': 1794052864, 'complete_at': 1794053576, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'pr_id': [14962, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [2, 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/14962/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'builddir': ['c:\\buildbot\\pr-win-x64', 'Worker'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'build_url': ['https://dl.dolphin-emu.org/prs/4b/41/pr-14962-dolphin-latest-x64.7z', 'SetProperty'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10963, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'branchname': ['pr-14962', 'Change'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'buildername': ['pr-win-x64', 'Builder'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['c:\\buildbot', 'Worker']}, 'buildrequest': {'buildrequestid': 197930, 'buildsetid': 44283, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1794052864, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 2, 'name': 'pr-win-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/2/builds/10963'}, 'type': 'raw_bb_hook'}
2026-11-07T12:07:50.108073 {'source': 'webserver', 'raw': {'buildid': 197249, 'number': 10968, 'builderid': 22, 'buildrequestid': 197935, 'workerid': 12, 'masterid': 1, 'started_at': 1794051740, 'complete_at': 1794053269, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builderid': [22, 'Builder'], 'workername': ['android', 'Worker'], 'buildnumber': [10968, 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'pr_id': [14962, 'Change'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'branchname': ['pr-14962', 'Change'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'branch': ['refs/pull/14962/head', 'Build'], 'repository': ['', 'Build'], 'builddir': ['/buildbot/pr-android', 'Worker'], 'buildername': ['pr-android', 'Builder']}, 'buildrequest': {'buildrequestid': 197935, 'buildsetid': 44283, 'builderid': 22, 'priority': 0, 'claimed': True, 'claimed_at': 1794051740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 22, 'name': 'pr-android', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/22/builds/10968'}, 'type': 'raw_bb_hook'}
2026-11-07T12:07:06.030996 {'source': 'webserver', 'raw': {'buildid': 197259, 'number': 10961, 'builderid': 1, 'buildrequestid': 197929, 'workerid': 9, 'masterid': 1, 'started_at': 1794053225, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'builderid': [1, 'Builder'], 'workername': ['debian', 'Worker'], 'buildnumber': [10961, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'codebase': ['', 'Build'], 'branchname': ['pr-14962', 'Change'], 'pr_id': [14962, 'Change'], 'branch': ['refs/pull/14962/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197929, 'buildsetid': 44283, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1794053225, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 1, 'name': 'pr-deb-dbg-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/1/builds/10961'}, 'type': 'raw_bb_hook'}
2026-11-07T12:07:05.920956 {'source': 'webserver', 'raw': {'buildid': 197250, 'number': 10960, 'builderid': 26, 'buildrequestid': 197936, 'workerid': 9, 'masterid': 1, 'started_at': 1794051740, 'complete_at': 1794053225, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'workername': ['debian', 'Worker'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'buildnumber': [10960, 'Build'], 'branch': ['refs/pull/14962/head', 'Build'], 'shortrev': ['c6c1c4', 'Change'], 'repository': ['', 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'warnings-count': [9, 'WarningCountingShellCommand'], 'branchname': ['pr-14962', 'Change'], 'builderid': [26, 'Builder'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'pr_id': [14962, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'basedir': ['/buildbot', 'Worker'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-deb-x64', 'Builder'], 'builddir': ['/buildbot/pr-deb-x64', 'Worker'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change']}, 'buildrequest': {'buildrequestid': 197936, 'buildsetid': 44283, 'builderid': 26, 'priority': 0, 'claimed': True, 'claimed_at': 1794051740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 26, 'name': 'pr-deb-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/26/builds/10960'}, 'type': 'raw_bb_hook'}
2026-11-07T12:06:28.162539 {'source': 'webserver', 'raw': {'buildid': 197246, 'number': 214, 'builderid': 49, 'buildrequestid': 197941, 'workerid': 15, 'masterid': 1, 'started_at': 1794051740, 'complete_at': 1794053187, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'pr_id': [14962, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-appimage-x64', 'Builder'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'branch': ['refs/pull/14962/head', 'Build'], 'branchname': ['pr-14962', 'Change'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'workername': ['altair-appimage', 'Worker'], 'buildnumber': [214, 'Build'], 'builderid': [49, 'Builder'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'warnings-count': [18, 'WarningCountingShellCommand'], 'codebase': ['', 'Build'], 'builddir': ['/buildbot/pr-appimage-x64', 'Worker'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197941, 'buildsetid': 44283, 'builderid': 49, 'priority': 0, 'claimed': True, 'claimed_at': 1794051740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 49, 'name': 'pr-appimage-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/49/builds/214'}, 'type': 'raw_bb_hook'}
2026-11-07T12:06:01.174838 {'source': 'webserver', 'raw': {'buildid': 197258, 'number': 9300, 'builderid': 19, 'buildrequestid': 197943, 'workerid': 8, 'masterid': 1, 'started_at': 1794053160, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'shortrev': ['c6c1c4', 'Trigger'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'pr_id': [14962, 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [19, 'Builder'], 'buildnumber': [9300, 'Build'], 'branchname': ['pr-14962', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'branch': ['refs/pull/14962/head', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197943, 'buildsetid': 44284, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1794053160, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794052507, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44284, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794052507, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197253, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197253, 'number': 10981, 'builderid': 7, 'buildrequestid': 197931, 'workerid': 8, 'masterid': 1, 'started_at': 1794051741, 'complete_at': 1794052507, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 19, 'name': 'pr-fifoci-mvk-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/19/builds/9300'}, 'type': 'raw_bb_hook'}
2026-11-07T12:06:00.933011 {'source': 'webserver', 'raw': {'buildid': 197255, 'number': 9302, 'builderid': 21, 'buildrequestid': 197944, 'workerid': 8, 'masterid': 1, 'started_at': 1794052507, 'complete_at': 1794053160, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14962', 'Trigger'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'pr_id': [14962, 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [21, 'Builder'], 'buildnumber': [9302, 'Build'], 'branch': ['refs/pull/14962/head', 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'warnings-count': [114, 'WarningCountingShellCommand'], 'shortrev': ['c6c1c4', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mtl-osx-m1', 'Worker'], 'repository': ['', 'Build'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197944, 'buildsetid': 44284, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1794052507, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794052507, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44284, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794052507, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197253, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197253, 'number': 10981, 'builderid': 7, 'buildrequestid': 197931, 'workerid': 8, 'masterid': 1, 'started_at': 1794051741, 'complete_at': 1794052507, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 21, 'name': 'pr-fifoci-mtl-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/21/builds/9302'}, 'type': 'raw_bb_hook'}
2026-11-07T12:05:40.490537 {'source': 'webserver', 'raw': {'buildid': 197257, 'number': 9614, 'builderid': 10, 'buildrequestid': 197945, 'workerid': 5, 'masterid': 1, 'started_at': 1794053139, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [10, 'Builder'], 'buildnumber': [9614, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'pr_id': [14962, 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'branchname': ['pr-14962', 'Trigger'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'shortrev': ['c6c1c4', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'branch': ['refs/pull/14962/head', 'Build']}, 'buildrequest': {'buildrequestid': 197945, 'buildsetid': 44285, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1794053139, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794053139, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44285, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794053139, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197254, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197254, 'number': 10962, 'builderid': 27, 'buildrequestid': 197937, 'workerid': 10, 'masterid': 1, 'started_at': 1794051749, 'complete_at': 1794053139, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 10, 'name': 'pr-fifoci-ogl-lin-mesa', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/10/builds/9614'}, 'type': 'raw_bb_hook'}
2026-11-07T12:05:40.385202 {'source': 'webserver', 'raw': {'buildid': 197254, 'number': 10962, 'builderid': 27, 'buildrequestid': 197937, 'workerid': 10, 'masterid': 1, 'started_at': 1794051749, 'complete_at': 1794053139, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14962', 'Change'], 'pr_id': [14962, 'Change'], 'workername': ['ubuntu-lts', 'Worker'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'basedir': ['/buildbot', 'Worker'], 'warnings-count': [8, 'WarningCountingShellCommand'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'branch': ['refs/pull/14962/head', 'Build'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'builderid': [27, 'Builder'], 'buildnumber': [10962, 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'shortrev': ['c6c1c4', 'Change'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-ubu-x64', 'Builder'], 'codebase': ['', 'Build'], 'builddir': ['/buildbot/pr-ubu-x64', 'Worker']}, 'buildrequest': {'buildrequestid': 197937, 'buildsetid': 44283, 'builderid': 27, 'priority': 0, 'claimed': True, 'claimed_at': 1794051749, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 27, 'name': 'pr-ubu-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/27/builds/10962'}, 'type': 'raw_bb_hook'}
2026-11-07T12:01:17.671326 {'source': 'webserver', 'raw': {'buildid': 197247, 'number': 208, 'builderid': 50, 'buildrequestid': 197942, 'workerid': 16, 'masterid': 1, 'started_at': 1794051740, 'complete_at': 1794052877, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14962', 'Change'], 'builderid': [50, 'Builder'], 'basedir': ['/buildbot', 'Worker'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'builddir': ['/buildbot/pr-appimage-arm64', 'Worker'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'pr_id': [14962, 'Change'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'workername': ['deneb-appimage', 'Worker'], 'buildnumber': [208, 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'buildername': ['pr-appimage-arm64', 'Builder'], 'shortrev': ['c6c1c4', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'warnings-count': [22, 'WarningCountingShellCommand'], 'branch': ['refs/pull/14962/head', 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197942, 'buildsetid': 44283, 'builderid': 50, 'priority': 0, 'claimed': True, 'claimed_at': 1794051740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 50, 'name': 'pr-appimage-arm64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/50/builds/208'}, 'type': 'raw_bb_hook'}
2026-11-07T12:01:05.091900 {'source': 'webserver', 'raw': {'buildid': 197256, 'number': 10963, 'builderid': 2, 'buildrequestid': 197930, 'workerid': 4, 'masterid': 1, 'started_at': 1794052864, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'pr_id': [14962, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [2, 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/14962/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10963, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'branchname': ['pr-14962', 'Change'], 'buildername': ['pr-win-x64', 'Builder'], 'repository': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197930, 'buildsetid': 44283, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1794052864, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 2, 'name': 'pr-win-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/2/builds/10963'}, 'type': 'raw_bb_hook'}
2026-11-07T12:01:04.973823 {'source': 'webserver', 'raw': {'buildid': 197251, 'number': 10962, 'builderid': 13, 'buildrequestid': 197934, 'workerid': 4, 'masterid': 1, 'started_at': 1794051740, 'complete_at': 1794052864, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'buildername': ['pr-win-arm64', 'Builder'], 'builderid': [13, 'Builder'], 'basedir': ['c:\\buildbot', 'Worker'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'build_url': ['https://dl.dolphin-emu.org/prs/1d/80/pr-14962-dolphin-latest-arm64.7z', 'SetProperty'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'pr_id': [14962, 'Change'], 'codebase': ['', 'Build'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'project': ['', 'Build'], 'shortrev': ['c6c1c4', 'Change'], 'branch': ['refs/pull/14962/head', 'Build'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'buildnumber': [10962, 'Build'], 'workername': ['windows', 'Worker'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'builddir': ['c:\\buildbot\\pr-win-arm64', 'Worker'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'repository': ['', 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branchname': ['pr-14962', 'Change']}, 'buildrequest': {'buildrequestid': 197934, 'buildsetid': 44283, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1794051740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 13, 'name': 'pr-win-arm64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/13/builds/10962'}, 'type': 'raw_bb_hook'}
2026-11-07T11:58:23.431582 {'source': 'webserver', 'raw': {'buildid': 197252, 'number': 6110, 'builderid': 43, 'buildrequestid': 197939, 'workerid': 13, 'masterid': 1, 'started_at': 1794051740, 'complete_at': 1794052685, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'workername': ['altair-flatpak', 'Worker'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13494', 'SetPropertyFromCommand Step'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'branchname': ['pr-14962', 'Change'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'buildername': ['pr-flatpak-x64', 'Builder'], 'buildnumber': [6110, 'Build'], 'branch': ['refs/pull/14962/head', 'Build'], 'scheduler': ['pr', 'Scheduler'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'repository': ['', 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'pr_id': [14962, 'Change'], 'builderid': [43, 'Builder'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'shortrev': ['c6c1c4', 'Change'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-x64', 'Worker']}, 'buildrequest': {'buildrequestid': 197939, 'buildsetid': 44283, 'builderid': 43, 'priority': 0, 'claimed': True, 'claimed_at': 1794051740, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1794051740, 'complete_at': 1794052685, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 43, 'name': 'pr-flatpak-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/43/builds/6110'}, 'type': 'raw_bb_hook'}
2026-11-07T11:57:47.405018 {'source': 'webserver', 'raw': {'buildid': 197248, 'number': 6050, 'builderid': 44, 'buildrequestid': 197940, 'workerid': 14, 'masterid': 1, 'started_at': 1794051740, 'complete_at': 1794052648, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'shortrev': ['c6c1c4', 'Change'], 'workername': ['deneb-flatpak', 'Worker'], 'buildnumber': [6050, 'Build'], 'branch': ['refs/pull/14962/head', 'Build'], 'project': ['', 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'branchname': ['pr-14962', 'Change'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-arm64', 'Worker'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13493', 'SetPropertyFromCommand Step'], 'scheduler': ['pr', 'Scheduler'], 'pr_id': [14962, 'Change'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'buildername': ['pr-flatpak-arm64', 'Builder'], 'builderid': [44, 'Builder']}, 'buildrequest': {'buildrequestid': 197940, 'buildsetid': 44283, 'builderid': 44, 'priority': 0, 'claimed': True, 'claimed_at': 1794051740, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1794051740, 'complete_at': 1794052648, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 44, 'name': 'pr-flatpak-arm64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/44/builds/6050'}, 'type': 'raw_bb_hook'}
2026-11-07T11:55:12.717730 {'source': 'webserver', 'raw': {'buildid': 197253, 'number': 10981, 'builderid': 7, 'buildrequestid': 197931, 'workerid': 8, 'masterid': 1, 'started_at': 1794051741, 'complete_at': 1794052507, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builderid': [7, 'Builder'], 'buildnumber': [10981, 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'got_revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'GitNoBranch'], 'workername': ['osx-m1', 'Worker'], 'repository': ['', 'Build'], 'builddir': ['/Users/ci/worker/base/pr-osx-universal', 'Worker'], 'branchname': ['pr-14962', 'Change'], 'branch': ['refs/pull/14962/head', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'shortrev': ['c6c1c4', 'Change'], 'pr_id': [14962, 'Change'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Change'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-osx-universal', 'Builder']}, 'buildrequest': {'buildrequestid': 197931, 'buildsetid': 44283, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1794051740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794051740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44283, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794051740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/7/builds/10981'}, 'type': 'raw_bb_hook'}
2026-11-07T11:55:08.671022 {'source': 'webserver', 'raw': {'buildid': 197255, 'number': 9302, 'builderid': 21, 'buildrequestid': 197944, 'workerid': 8, 'masterid': 1, 'started_at': 1794052507, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14962', 'Trigger'], 'baserev': ['4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'Change'], 'headrev': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Trigger'], 'pr_id': [14962, 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'builderid': [21, 'Builder'], 'buildnumber': [9302, 'Build'], 'branch': ['refs/pull/14962/head', 'Build'], 'revision': ['c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'workername': ['osx-m1', 'Worker'], 'owners': [['Central (on behalf of: joshuavandaele)'], 'Build'], 'shortrev': ['c6c1c4', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197944, 'buildsetid': 44284, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1794052507, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794052507, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44284, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794052507, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 197253, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13293, 'branch': 'refs/pull/14962/head', 'revision': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794051740, 'patch': None}]}, 'parentbuild': {'buildid': 197253, 'number': 10981, 'builderid': 7, 'buildrequestid': 197931, 'workerid': 8, 'masterid': 1, 'started_at': 1794051741, 'complete_at': 1794052507, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 21, 'name': 'pr-fifoci-mtl-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/21/builds/9302'}, 'type': 'raw_bb_hook'}
Recent 'raw_gh_hook' events
2026-11-07T15:33:19.435178 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14993, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993', 'id': 5203145608, 'node_id': 'PR_kwDOALCn2M8AAAABNiGziA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14993', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14993.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14993.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993', 'number': 14993, 'state': 'open', 'locked': False, 'title': 'VideoCommon: Derive fog depth from clip space on Nouveau', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "## Depends on\n\n#14992 (`fix/nouveau-driver-detection`) — `DRIVER_NOUVEAU` previously never matched on modern Mesa, so the bug entry added here would never trigger without it. This PR is a single commit based on `master` and touches disjoint files, so it is inert (but harmless) until #14992 lands; please merge #14992 first.\n\n## Problem\n\nWith `FastDepthCalc` enabled, the fog/ztexture depth (`zCoord`) is derived from the hardware fragment depth (`rawpos.z`). On Nouveau (verified on Fermi/NVC3 with Mesa) that value is wrong in full game shaders, which saturates perspective fog across entire scenes:\n\n- Metal Gear Solid: The Twin Snakes — cargo dock renders as a solid dark-green wash (HUD/minimap unaffected)\n- Super Smash Bros. Melee — menus wash out, some characters/stages wrong\n- Super Mario Sunshine — Mario turns monochrome in goop\n\nDisabling `FastDepthCalc` avoids it by recomputing depth from clip space (the existing non-fast path), at a performance cost.\n\n## Fix\n\nAdd `BUG_BROKEN_FRAG_COORD_DEPTH` for `DRIVER_NOUVEAU` and route affected drivers through the same clip-space depth calculation already used when `FastDepthCalc` is off, including emitting the `clipPos` varying in the vertex/geometry/uber shader generators. Other drivers generate identical shaders to before; the new `ShaderHostConfig` bit also separates the shader cache, so stale binaries compiled with the old formula are not reused.\n\nNote on placement: the root cause may be in Nouveau's handling of `gl_FragCoord.z` in these shaders, but minimal GL repros (fog math, `gl_FragCoord.z` under clip control/reversed ranges, early fragment tests, dynamic sampler indexing) all pass on the same driver, so no Mesa-side defect could be isolated. This uses Dolphin's existing driver-workaround mechanism, gated to Nouveau only.\n\n## Testing\n\nGeForce GT 555M (NVC3), `FastDepthCalc = True`, cold shader cache, both stock Mesa 26.2.6 (Arch) and a locally patched Mesa:\n\n- Twin Snakes cargo dock and the preceding diving-suit cutscene: correct colours (previously dark-green wash)\n- Melee title/menus/characters: correct (previously washed/grey-blue)\n- One-variable isolation runs: original shader cache = broken, fresh cache = correct; forcing `early_fragment_tests` or toggling image-load-store paths made no difference once the cache was cold\n", 'created_at': '2026-11-07T15:32:48Z', 'updated_at': '2026-11-07T15:33:16Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '3352b2a735a89dac5f28b887ee7dec6cd52013fb', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'head': {'label': 'Twilight0:fix/nouveau-frag-coord-depth', 'ref': 'fix/nouveau-frag-coord-depth', 'sha': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1449487110, 'node_id': 'R_kgDOVmVrBg', 'name': 'dolphin', 'full_name': 'Twilight0/dolphin', 'private': False, 'owner': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Twilight0/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/Twilight0/dolphin', 'forks_url': 'https://api.github.com/repos/Twilight0/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Twilight0/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Twilight0/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Twilight0/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Twilight0/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Twilight0/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Twilight0/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Twilight0/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Twilight0/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Twilight0/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Twilight0/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Twilight0/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Twilight0/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Twilight0/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Twilight0/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Twilight0/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Twilight0/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Twilight0/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Twilight0/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Twilight0/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Twilight0/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Twilight0/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Twilight0/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Twilight0/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Twilight0/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Twilight0/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Twilight0/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Twilight0/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Twilight0/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Twilight0/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Twilight0/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Twilight0/dolphin/deployments', 'created_at': '2026-11-07T15:32:24Z', 'updated_at': '2026-11-07T15:32:24Z', 'pushed_at': '2026-11-07T15:32:32Z', 'git_url': 'git://github.com/Twilight0/dolphin.git', 'ssh_url': 'git@github.com:Twilight0/dolphin.git', 'clone_url': 'https://github.com/Twilight0/dolphin.git', 'svn_url': 'https://github.com/Twilight0/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14993'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 35, 'deletions': 17, 'changed_files': 8}, 'changes': {'body': {'from': "## Depends on\n\n#14992 (`fix/nouveau-driver-detection`) — `DRIVER_NOUVEAU` previously never matched on modern Mesa, so the bug entry added here would never trigger without it. This branch is stacked on that one; only the last commit is new.\n\n## Problem\n\nWith `FastDepthCalc` enabled, the fog/ztexture depth (`zCoord`) is derived from the hardware fragment depth (`rawpos.z`). On Nouveau (verified on Fermi/NVC3 with Mesa) that value is wrong in full game shaders, which saturates perspective fog across entire scenes:\n\n- Metal Gear Solid: The Twin Snakes — cargo dock renders as a solid dark-green wash (HUD/minimap unaffected)\n- Super Smash Bros. Melee — menus wash out, some characters/stages wrong\n- Super Mario Sunshine — Mario turns monochrome in goop\n\nDisabling `FastDepthCalc` avoids it by recomputing depth from clip space (the existing non-fast path), at a performance cost.\n\n## Fix\n\nAdd `BUG_BROKEN_FRAG_COORD_DEPTH` for `DRIVER_NOUVEAU` and route affected drivers through the same clip-space depth calculation already used when `FastDepthCalc` is off, including emitting the `clipPos` varying in the vertex/geometry/uber shader generators. Other drivers generate identical shaders to before; the new `ShaderHostConfig` bit also separates the shader cache, so stale binaries compiled with the old formula are not reused.\n\nNote on placement: the root cause may be in Nouveau's handling of `gl_FragCoord.z` in these shaders, but minimal GL repros (fog math, `gl_FragCoord.z` under clip control/reversed ranges, early fragment tests, dynamic sampler indexing) all pass on the same driver, so no Mesa-side defect could be isolated. This uses Dolphin's existing driver-workaround mechanism, gated to Nouveau only.\n\n## Testing\n\nGeForce GT 555M (NVC3), `FastDepthCalc = True`, cold shader cache, both stock Mesa 26.2.6 (Arch) and a locally patched Mesa:\n\n- Twin Snakes cargo dock and the preceding diving-suit cutscene: correct colours (previously dark-green wash)\n- Melee title/menus/characters: correct (previously washed/grey-blue)\n- One-variable isolation runs: original shader cache = broken, fresh cache = correct; forcing `early_fragment_tests` or toggling image-load-store paths made no difference once the cache was cold"}}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:32:52.347392 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 14993, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993', 'id': 5203145608, 'node_id': 'PR_kwDOALCn2M8AAAABNiGziA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14993', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14993.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14993.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993', 'number': 14993, 'state': 'open', 'locked': False, 'title': 'VideoCommon: Derive fog depth from clip space on Nouveau', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "## Depends on\n\n#14992 (`fix/nouveau-driver-detection`) — `DRIVER_NOUVEAU` previously never matched on modern Mesa, so the bug entry added here would never trigger without it. This branch is stacked on that one; only the last commit is new.\n\n## Problem\n\nWith `FastDepthCalc` enabled, the fog/ztexture depth (`zCoord`) is derived from the hardware fragment depth (`rawpos.z`). On Nouveau (verified on Fermi/NVC3 with Mesa) that value is wrong in full game shaders, which saturates perspective fog across entire scenes:\n\n- Metal Gear Solid: The Twin Snakes — cargo dock renders as a solid dark-green wash (HUD/minimap unaffected)\n- Super Smash Bros. Melee — menus wash out, some characters/stages wrong\n- Super Mario Sunshine — Mario turns monochrome in goop\n\nDisabling `FastDepthCalc` avoids it by recomputing depth from clip space (the existing non-fast path), at a performance cost.\n\n## Fix\n\nAdd `BUG_BROKEN_FRAG_COORD_DEPTH` for `DRIVER_NOUVEAU` and route affected drivers through the same clip-space depth calculation already used when `FastDepthCalc` is off, including emitting the `clipPos` varying in the vertex/geometry/uber shader generators. Other drivers generate identical shaders to before; the new `ShaderHostConfig` bit also separates the shader cache, so stale binaries compiled with the old formula are not reused.\n\nNote on placement: the root cause may be in Nouveau's handling of `gl_FragCoord.z` in these shaders, but minimal GL repros (fog math, `gl_FragCoord.z` under clip control/reversed ranges, early fragment tests, dynamic sampler indexing) all pass on the same driver, so no Mesa-side defect could be isolated. This uses Dolphin's existing driver-workaround mechanism, gated to Nouveau only.\n\n## Testing\n\nGeForce GT 555M (NVC3), `FastDepthCalc = True`, cold shader cache, both stock Mesa 26.2.6 (Arch) and a locally patched Mesa:\n\n- Twin Snakes cargo dock and the preceding diving-suit cutscene: correct colours (previously dark-green wash)\n- Melee title/menus/characters: correct (previously washed/grey-blue)\n- One-variable isolation runs: original shader cache = broken, fresh cache = correct; forcing `early_fragment_tests` or toggling image-load-store paths made no difference once the cache was cold", 'created_at': '2026-11-07T15:32:48Z', 'updated_at': '2026-11-07T15:32:48Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'head': {'label': 'Twilight0:fix/nouveau-frag-coord-depth', 'ref': 'fix/nouveau-frag-coord-depth', 'sha': '33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1449487110, 'node_id': 'R_kgDOVmVrBg', 'name': 'dolphin', 'full_name': 'Twilight0/dolphin', 'private': False, 'owner': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Twilight0/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/Twilight0/dolphin', 'forks_url': 'https://api.github.com/repos/Twilight0/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Twilight0/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Twilight0/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Twilight0/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Twilight0/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Twilight0/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Twilight0/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Twilight0/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Twilight0/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Twilight0/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Twilight0/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Twilight0/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Twilight0/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Twilight0/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Twilight0/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Twilight0/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Twilight0/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Twilight0/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Twilight0/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Twilight0/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Twilight0/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Twilight0/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Twilight0/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Twilight0/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Twilight0/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Twilight0/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Twilight0/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Twilight0/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Twilight0/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Twilight0/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Twilight0/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Twilight0/dolphin/deployments', 'created_at': '2026-11-07T15:32:24Z', 'updated_at': '2026-11-07T15:32:24Z', 'pushed_at': '2026-11-07T15:32:32Z', 'git_url': 'git://github.com/Twilight0/dolphin.git', 'ssh_url': 'git@github.com:Twilight0/dolphin.git', 'clone_url': 'https://github.com/Twilight0/dolphin.git', 'svn_url': 'https://github.com/Twilight0/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14993'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14993/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14993/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/33a9f4b20661032c30c4ebe7d6cb22b1a5f3679f'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 35, 'deletions': 17, 'changed_files': 8}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 484, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 484, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:32:42.955796 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 14992, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992', 'id': 5203144391, 'node_id': 'PR_kwDOALCn2M8AAAABNiGuxw', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14992', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14992.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14992.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14992', 'number': 14992, 'state': 'open', 'locked': False, 'title': 'OGL: Fix Nouveau driver detection on modern Mesa', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': '## Problem\n\n`InitDriverInfo()` in `OGLConfig.cpp` only recognised Nouveau when `GL_VENDOR` was the literal string `"nouveau"`. Modern Mesa reports `GL_VENDOR` as `"Mesa"` with the GPU codename (e.g. `NVC3`) in `GL_RENDERER`, so `DRIVER_NOUVEAU` never matched and no Nouveau `DriverDetails` bug entry ever applied.\n\n## Fix\n\nIdentify Nouveau from the renderer string instead: it either contains `"nouveau"` (older Gallium strings) or starts with the `NV` chip codename prefix.\n\nThis is a small, self-contained correction; it only affects which driver is recorded for Mesa/Nouveau systems. Verified on GeForce GT 555M (NVC3) with Mesa 26.2.6, where `DRIVER_NOUVEAU` now matches.', 'created_at': '2026-11-07T15:32:39Z', 'updated_at': '2026-11-07T15:32:39Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14992/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/494c39e23055617e2789df8c0a031bad6e307344', 'head': {'label': 'Twilight0:fix/nouveau-driver-detection', 'ref': 'fix/nouveau-driver-detection', 'sha': '494c39e23055617e2789df8c0a031bad6e307344', 'user': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1449487110, 'node_id': 'R_kgDOVmVrBg', 'name': 'dolphin', 'full_name': 'Twilight0/dolphin', 'private': False, 'owner': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/Twilight0/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/Twilight0/dolphin', 'forks_url': 'https://api.github.com/repos/Twilight0/dolphin/forks', 'keys_url': 'https://api.github.com/repos/Twilight0/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/Twilight0/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/Twilight0/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/Twilight0/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/Twilight0/dolphin/events', 'assignees_url': 'https://api.github.com/repos/Twilight0/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/Twilight0/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/Twilight0/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/Twilight0/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/Twilight0/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/Twilight0/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/Twilight0/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/Twilight0/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/Twilight0/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/Twilight0/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/Twilight0/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/Twilight0/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/Twilight0/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/Twilight0/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/Twilight0/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/Twilight0/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/Twilight0/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/Twilight0/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/Twilight0/dolphin/merges', 'archive_url': 'https://api.github.com/repos/Twilight0/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/Twilight0/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/Twilight0/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/Twilight0/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/Twilight0/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/Twilight0/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/Twilight0/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/Twilight0/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/Twilight0/dolphin/deployments', 'created_at': '2026-11-07T15:32:24Z', 'updated_at': '2026-11-07T15:32:24Z', 'pushed_at': '2026-11-07T15:32:32Z', 'git_url': 'git://github.com/Twilight0/dolphin.git', 'ssh_url': 'git@github.com:Twilight0/dolphin.git', 'clone_url': 'https://github.com/Twilight0/dolphin.git', 'svn_url': 'https://github.com/Twilight0/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 483, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 483, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14992'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14992'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14992/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14992/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/494c39e23055617e2789df8c0a031bad6e307344'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 5, 'deletions': 1, 'changed_files': 1}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T15:29:57Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3382, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 483, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3382, 'open_issues': 483, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'Twilight0', 'id': 1566256, 'node_id': 'MDQ6VXNlcjE1NjYyNTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1566256?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Twilight0', 'html_url': 'https://github.com/Twilight0', 'followers_url': 'https://api.github.com/users/Twilight0/followers', 'following_url': 'https://api.github.com/users/Twilight0/following{/other_user}', 'gists_url': 'https://api.github.com/users/Twilight0/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Twilight0/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Twilight0/subscriptions', 'organizations_url': 'https://api.github.com/users/Twilight0/orgs', 'repos_url': 'https://api.github.com/users/Twilight0/repos', 'events_url': 'https://api.github.com/users/Twilight0/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Twilight0/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:26:54.665580 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'edited', 'changes': {'body': {'from': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies. Haven't tried the flatpak but I suspect it will have a similar missing dep.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: "}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 29, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T15:18:51Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6708769494, 'node_id': 'IC_kwDOALCn2M8AAAABj9-y1g', 'user': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T15:11:18Z', 'updated_at': '2026-11-07T15:26:53Z', 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies. Haven't tried the flatpak but it may also be missing the dep.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T14:45:28Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:18:52.736982 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'edited', 'changes': {'body': {'from': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: "}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 29, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T15:17:26Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6708769494, 'node_id': 'IC_kwDOALCn2M8AAAABj9-y1g', 'user': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T15:11:18Z', 'updated_at': '2026-11-07T15:18:51Z', 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies. Haven't tried the flatpak but I suspect it will have a similar missing dep.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T14:45:28Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:17:27.582255 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'edited', 'changes': {'body': {'from': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: "}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 29, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T15:11:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6708769494, 'node_id': 'IC_kwDOALCn2M8AAAABj9-y1g', 'user': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T15:11:18Z', 'updated_at': '2026-11-07T15:17:26Z', 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n- The appimage doesn't build with wayland due to missing dependencies.\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T14:45:28Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T15:11:20.812935 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 29, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T15:11:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6708769494', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6708769494, 'node_id': 'IC_kwDOALCn2M8AAAABj9-y1g', 'user': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T15:11:18Z', 'updated_at': '2026-11-07T15:11:18Z', 'body': "I did some user testing on cachy under plasma 6.8. Overall things seem to work as expected. \r\n\r\nIssues I ran into:\r\n- This will break everyone's keyboard and mouse binds and hotkeys. There is a new K+M device name so none of the binds will work for existing users. Perhaps add a fake device with the old name that redirects to the new wayland one?\r\n- Hotkeys don't work when the window has no focus even when the `Hotkeys Require Window Focus` is disabled. This will likely require dolphin to request them from [`org.freedesktop.portal.GlobalShortcuts`](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).\r\n\r\nThings tested:\r\n- Background input :heavy_check_mark: \r\n- Hotkeys **with** window focus :heavy_check_mark: \r\n- Various graphics enhancements like internal resolution and post processing :heavy_check_mark: \r\n- Graphics mods :heavy_check_mark: \r\n- DPI scaling (applied instantly now) :heavy_check_mark: \r\n- Loading custom textures :heavy_check_mark: \r\n- OSD graphs and metrics look, better? Maybe placebo. :heavy_check_mark: ", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6708769494/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T14:45:28Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563784, 'stargazers_count': 15772, 'watchers_count': 15772, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15772, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'infirit', 'id': 3465730, 'node_id': 'MDQ6VXNlcjM0NjU3MzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3465730?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/infirit', 'html_url': 'https://github.com/infirit', 'followers_url': 'https://api.github.com/users/infirit/followers', 'following_url': 'https://api.github.com/users/infirit/following{/other_user}', 'gists_url': 'https://api.github.com/users/infirit/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/infirit/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/infirit/subscriptions', 'organizations_url': 'https://api.github.com/users/infirit/orgs', 'repos_url': 'https://api.github.com/users/infirit/repos', 'events_url': 'https://api.github.com/users/infirit/events{/privacy}', 'received_events_url': 'https://api.github.com/users/infirit/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T06:17:18.265645 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991', 'id': 6253640354, 'node_id': 'PR_kwDOALCn2M8AAAABNcZGmQ', 'number': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'user': {'login': 'jpferraz-git', 'id': 179407958, 'node_id': 'U_kgDOCrGMVg', 'avatar_url': 'https://avatars.githubusercontent.com/u/179407958?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jpferraz-git', 'html_url': 'https://github.com/jpferraz-git', 'followers_url': 'https://api.github.com/users/jpferraz-git/followers', 'following_url': 'https://api.github.com/users/jpferraz-git/following{/other_user}', 'gists_url': 'https://api.github.com/users/jpferraz-git/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jpferraz-git/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jpferraz-git/subscriptions', 'organizations_url': 'https://api.github.com/users/jpferraz-git/orgs', 'repos_url': 'https://api.github.com/users/jpferraz-git/repos', 'events_url': 'https://api.github.com/users/jpferraz-git/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jpferraz-git/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-07T06:17:16Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14991', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14991.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14991.patch', 'merged_at': None}, 'body': 'When running Dolphin on Linux systems with Intel Integrated Graphics (Tiger Lake / Iris Xe using Mesa `iris`), using the OpenGL backend frequently leads to kernel GPU hangs (`i915` ring timeouts) during heavy EFB / shader workloads (such as in *Super Mario Galaxy* and *Skyward Sword*). Under Wayland compositors (GNOME Mutter / KDE KWin), this GPU reset causes an unrecoverable display freeze.\r\n\r\nWhile PR #14835 changed the default backend to Vulkan on Linux for clean installs, existing installations with an already generated `Dolphin.ini` keep `GFXBackend = OGL` and remain prone to these system freezes.\r\n\r\nThis patch adds an on-screen warning (OSD) in `PopulateConfig()` when `gl_vendor == "Intel"` and Mesa are detected on Linux under OpenGL, advising users to switch to Vulkan.\r\n\r\n### Evidence\r\n\r\n**System Environment:**\r\n- **OS:** Ubuntu Linux (Wayland / GNOME Mutter)\r\n- **GPU:** Intel Iris Xe Graphics (Tiger Lake GT2, `i915` kernel module)\r\n- **Mesa:** `iris` OpenGL driver (vendor string: `"Intel"`)\r\n\r\n**Kernel log signature during freeze (`dmesg` / `journalctl -k`):**\r\n```text\r\nkernel: i915 0000:00:02.0: [drm] GPU HANG: ecode 12:0:00000000, in dolphin-emu\r\nkernel: i915 0000:00:02.0: [drm] Resetting rcs0 for stopped heartbeat on rcs0\r\nkernel: [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:...] flip_done timed out\r\n```\r\nOnce the `i915` reset sequence finishes, the Wayland compositor permanently loses display synchronization (`Pageflip timed out`), locking up all screen updates and requiring a forced hard reboot.\r\n\r\n*(Note per Contributing.md: The author drafted and refined this patch and PR description with LLM assistance.)*', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991/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/dolphin-emu/dolphin/issues/14991/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6703268470', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6703268470', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6703268470, 'node_id': 'IC_kwDOALCn2M8AAAABj4vCdg', 'user': {'login': 'Tilka', 'id': 123798, 'node_id': 'MDQ6VXNlcjEyMzc5OA==', 'avatar_url': 'https://avatars.githubusercontent.com/u/123798?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Tilka', 'html_url': 'https://github.com/Tilka', 'followers_url': 'https://api.github.com/users/Tilka/followers', 'following_url': 'https://api.github.com/users/Tilka/following{/other_user}', 'gists_url': 'https://api.github.com/users/Tilka/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Tilka/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Tilka/subscriptions', 'organizations_url': 'https://api.github.com/users/Tilka/orgs', 'repos_url': 'https://api.github.com/users/Tilka/repos', 'events_url': 'https://api.github.com/users/Tilka/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Tilka/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T06:17:16Z', 'updated_at': '2026-11-07T06:17:16Z', 'body': 'Did you report this to Mesa developers? Does it affect more than one user? I\'d rather not add scare warnings for something that could just be failing hardware or could get fixed in the next driver release. So far, I\'d call this an anecdote rather than "evidence".', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6703268470/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'Tilka', 'id': 123798, 'node_id': 'MDQ6VXNlcjEyMzc5OA==', 'avatar_url': 'https://avatars.githubusercontent.com/u/123798?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Tilka', 'html_url': 'https://github.com/Tilka', 'followers_url': 'https://api.github.com/users/Tilka/followers', 'following_url': 'https://api.github.com/users/Tilka/following{/other_user}', 'gists_url': 'https://api.github.com/users/Tilka/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Tilka/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Tilka/subscriptions', 'organizations_url': 'https://api.github.com/users/Tilka/orgs', 'repos_url': 'https://api.github.com/users/Tilka/repos', 'events_url': 'https://api.github.com/users/Tilka/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Tilka/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T05:46:01.118146 {'source': 'webserver', 'gh_type': 'check_suite', 'raw': {'action': 'requested', 'check_suite': {'id': 114727375101, 'node_id': 'CS_kwDOALCn2M8AAAAatkjQ_Q', 'head_branch': 'release-prep-2609b', 'head_sha': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/check-suites/114727375101', 'before': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'after': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'pull_requests': [], 'app': {'id': 49947, 'client_id': 'Iv1.1fcaea7644d8b727', 'slug': 'dolphin-ci', 'node_id': 'MDM6QXBwNDk5NDc=', 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'Dolphin CI', 'description': 'Continuous Integration setup for [dolphin-emu.org](https://dolphin-emu.org/).', 'external_url': 'https://github.com/dolphin-emu', 'html_url': 'https://github.com/apps/dolphin-ci', 'created_at': '2019-12-26T22:26:07Z', 'updated_at': '2019-12-26T22:33:19Z', 'permissions': {'checks': 'write', 'contents': 'read', 'issues': 'write', 'members': 'read', 'metadata': 'read', 'pull_requests': 'write', 'statuses': 'write'}, 'events': ['check_run', 'commit_comment', 'issue_comment', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push']}, 'created_at': '2026-11-07T05:45:58Z', 'updated_at': '2026-11-07T05:45:58Z', 'rerequestable': True, 'runs_rerequestable': True, 'latest_check_runs_count': 0, 'check_runs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/check-suites/114727375101/check-runs', 'head_commit': {'id': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'tree_id': 'c1487cbdd5bde3880877767fd9c51d88aa9cf1c2', 'message': 'ScmRevGen: Bump version to 2609b', 'timestamp': '2026-11-07T05:45:44Z', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me'}}}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-07T05:45:57Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T05:45:59.611160 {'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/release-prep-2609b', 'before': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'after': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'name': 'dolphin-emu', 'email': None, 'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': 1374484077, 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': 1794030357, 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'stargazers': 15773, 'master_branch': 'master', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'OatmealDome', 'email': 'OatmealDome@users.noreply.github.com'}, 'forced': False, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created': False, 'deleted': False, 'base_ref': None, 'compare': 'https://github.com/dolphin-emu/dolphin/compare/3c8388141325...18a9d1b0821c', 'commits': [{'id': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'tree_id': 'c1487cbdd5bde3880877767fd9c51d88aa9cf1c2', 'distinct': True, 'message': 'ScmRevGen: Bump version to 2609b', 'timestamp': '2026-11-07T00:45:44-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:45:44-05:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:45:44-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['CMake/ScmRevGen.cmake']}], 'head_commit': {'id': '18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'tree_id': 'c1487cbdd5bde3880877767fd9c51d88aa9cf1c2', 'distinct': True, 'message': 'ScmRevGen: Bump version to 2609b', 'timestamp': '2026-11-07T00:45:44-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/18a9d1b0821c5142ceffa132ae7da87bcd4eb7b7', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:45:44-05:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:45:44-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['CMake/ScmRevGen.cmake']}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T05:42:07.496450 {'source': 'webserver', 'gh_type': 'check_suite', 'raw': {'action': 'requested', 'check_suite': {'id': 114726705391, 'node_id': 'CS_kwDOALCn2M8AAAAatj6Y7w', 'head_branch': 'release-prep-2609b', 'head_sha': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/check-suites/114726705391', 'before': '0000000000000000000000000000000000000000', 'after': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'pull_requests': [], 'app': {'id': 49947, 'client_id': 'Iv1.1fcaea7644d8b727', 'slug': 'dolphin-ci', 'node_id': 'MDM6QXBwNDk5NDc=', 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'Dolphin CI', 'description': 'Continuous Integration setup for [dolphin-emu.org](https://dolphin-emu.org/).', 'external_url': 'https://github.com/dolphin-emu', 'html_url': 'https://github.com/apps/dolphin-ci', 'created_at': '2019-12-26T22:26:07Z', 'updated_at': '2019-12-26T22:33:19Z', 'permissions': {'checks': 'write', 'contents': 'read', 'issues': 'write', 'members': 'read', 'metadata': 'read', 'pull_requests': 'write', 'statuses': 'write'}, 'events': ['check_run', 'commit_comment', 'issue_comment', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push']}, 'created_at': '2026-11-07T05:42:05Z', 'updated_at': '2026-11-07T05:42:05Z', 'rerequestable': True, 'runs_rerequestable': True, 'latest_check_runs_count': 0, 'check_runs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/check-suites/114726705391/check-runs', 'head_commit': {'id': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'tree_id': '799e3bbd968f96182c5a50dd3815ef85254411ed', 'message': 'VideoCommon: error if the same asset id is used with a different type', 'timestamp': '2026-11-07T05:38:39Z', 'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me'}}}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-07T05:42:03Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T05:42:05.795776 {'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/release-prep-2609b', 'before': '0000000000000000000000000000000000000000', 'after': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'name': 'dolphin-emu', 'email': None, 'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': 1374484077, 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': 1794030123, 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'stargazers': 15773, 'master_branch': 'master', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'OatmealDome', 'email': 'OatmealDome@users.noreply.github.com'}, 'forced': False, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created': True, 'deleted': False, 'base_ref': None, 'compare': 'https://github.com/dolphin-emu/dolphin/compare/24f04c3ba0be^...3c8388141325', 'commits': [{'id': '24f04c3ba0beca819e0b97e5b4ca830b070f9f74', 'tree_id': '60588b4f0080c83e661ff283581884be84e87fd9', 'distinct': True, 'message': 'Revert "msvc: use std::chrono for GetLocalTimeSinceJan1970"\n\nThis reverts commit 86da6c98fbd229d87de7cf8b9c7eb94c16923829.', 'timestamp': '2026-11-06T17:54:14-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/24f04c3ba0beca819e0b97e5b4ca830b070f9f74', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-23T11:49:22-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-06T17:54:14-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['Source/Core/Common/Timer.cpp']}, {'id': '7093031c17e931f6be50b8cc1ea94ab055b23eb2', 'tree_id': '8fe327b0560ad93c9f6c131c981dc96ab9a4d33d', 'distinct': True, 'message': 'Vulkan: Fetch driverVersion\n\nFor use with DriverDetails.', 'timestamp': '2026-11-06T17:54:24-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/7093031c17e931f6be50b8cc1ea94ab055b23eb2', 'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-08-16T19:35:12+02:00', 'username': 'JosJuice'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-06T17:54:24-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['Source/Core/VideoBackends/Vulkan/VulkanContext.cpp']}, {'id': 'ba77539b53d79a8d7d5a7c6a63a692487ca75d08', 'tree_id': 'a3f8b2b7cdcbd8a596546730a497a4218a34cd5a', 'distinct': True, 'message': 'VideoCommon: Work around Adreno TEV zero input miscompilation\n\nSome Qualcomm Android drivers from version 700 onward miscompile\nspecialized TEV pixel shaders when color input A or B is TevColorArg::Zero.\nUse konstLookup[8].rgb, which PixelShaderManager initializes to zero,\nto keep these inputs dependent on a uniform value.\n\nUse the existing driver bug gate for OpenGL and Vulkan. Other inputs and\nunaffected drivers retain their original shader expressions.', 'timestamp': '2026-11-06T17:54:28-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/ba77539b53d79a8d7d5a7c6a63a692487ca75d08', 'author': {'name': 'Starlightbotanist', 'email': 'starlightbotanist@gmail.com', 'date': '2026-10-01T13:28:38-04:00', 'username': 'Starlightbotanist'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-06T17:54:28-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['Source/Core/VideoCommon/ConstantManager.h', 'Source/Core/VideoCommon/DriverDetails.cpp', 'Source/Core/VideoCommon/DriverDetails.h', 'Source/Core/VideoCommon/PixelShaderGen.cpp']}, {'id': '5eaaba5a4328d63ab7fe1147c9478ebda26746ff', 'tree_id': 'dbe9ced5641d895d9042219ae41343aa9c986268', 'distinct': True, 'message': "DolphinQt: Fix crash from stale timer event in ToolTipWidget\n\nLLM generated explaination for the LLM generated commit:\n\nA queued QTimerEvent can be dispatched after the timer was already killed (Qt recycles timer ids), e.g. when a slider is dragged and enter/leave events fire in rapid succession. In that case m_timer_id is empty and dereferencing it in timerEvent() asserts on 'this->_M_is_engaged()' in debug builds, while in release builds it passes a garbage timer id to killTimer().\n\nOnly process the event if it matches the timer we are tracking, which also prevents showing a balloon for a stale event.", 'timestamp': '2026-11-06T17:54:43-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/5eaaba5a4328d63ab7fe1147c9478ebda26746ff', 'author': {'name': 'debug687', 'email': '313431556+debug687@users.noreply.github.com', 'date': '2026-10-19T21:29:55Z', 'username': 'debug687'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-06T17:54:43-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['Source/Core/DolphinQt/Config/ToolTipControls/ToolTipWidget.h']}, {'id': '254ae341ec29809a0fcec1f95ffe98da16f1524c', 'tree_id': '22c393a54383bd680b0df9a198c29c44316a23b2', 'distinct': True, 'message': 'Revert "GameINI: Add patches to limit internal framerate in Driver: San Francisco."\n\nThis reverts commit b7e447e21258f103cbaa1bda1ec6b7a4ce3d4e97. The patch\nbreaks the game according to https://bugs.dolphin-emu.org/issues/14156.', 'timestamp': '2026-11-06T18:30:12-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/254ae341ec29809a0fcec1f95ffe98da16f1524c', 'author': {'name': 'JosJuice', 'email': 'josjuice@gmail.com', 'date': '2026-11-04T19:36:38+01:00', 'username': 'JosJuice'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-06T18:30:12-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': ['Data/Sys/GameSettings/SDVE41.ini', 'Data/Sys/GameSettings/SDVP41.ini'], 'modified': ['Data/Sys/ApprovedInis.json']}, {'id': '0b8f943a7e9e8e494319c5c855c26bd0036f497d', 'tree_id': 'c9e41a1208a517aadf8951b3543647a15960f6e1', 'distinct': True, 'message': 'Core: bound legacy savestate LZO decompression\n\nLegacy savestate headers controlled both the compressed input length\nand the decompression buffer size. The input was read into a fixed-size\nbuffer without validation, and the unsafe LZO API could write past its\noutput buffer.\n\nUse the legacy block size as the output capacity, reject oversized\ncompressed blocks, and use the bounds-checking LZO decompressor.', 'timestamp': '2026-11-07T00:38:08-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/0b8f943a7e9e8e494319c5c855c26bd0036f497d', 'author': {'name': 'Acts1631', 'email': 'acts1631kjv@proton.me', 'date': '2026-11-01T19:39:01-05:00', 'username': 'acts-1631'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:38:08-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['Source/Core/Core/State.cpp']}, {'id': '879d19e9db222e907167e01831e8b13bfc693714', 'tree_id': '5d511b17a328817afdb6dca378848262ade93303', 'distinct': True, 'message': 'Core: bound FIFO memory updates\n\nFIFO logs control each memory update address and data size. Playback\nmasked only the start address into RAM or EXRAM, then copied the\ncomplete update contiguously. An update reaching the end of a mapped\nregion could therefore write beyond host-mapped emulated memory.\n\nResolve the target through MemoryManager and reject updates larger than\nthe remaining valid span before copying them.', 'timestamp': '2026-11-07T00:38:21-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/879d19e9db222e907167e01831e8b13bfc693714', 'author': {'name': 'Acts1631', 'email': 'acts1631kjv@proton.me', 'date': '2026-11-01T19:40:27-05:00', 'username': 'acts-1631'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:38:21-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['Source/Core/Core/FifoPlayer/FifoPlayer.cpp']}, {'id': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'tree_id': '799e3bbd968f96182c5a50dd3815ef85254411ed', 'distinct': True, 'message': 'VideoCommon: error if the same asset id is used with a different type', 'timestamp': '2026-11-07T00:38:39-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/3c8388141325ac6ba9b399f16ee29ba34938e56f', 'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-11-04T19:27:06-06:00', 'username': 'iwubcode'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:38:39-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['Source/Core/VideoCommon/Assets/CustomAssetCache.cpp', 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'Source/Core/VideoCommon/Resources/MaterialResource.cpp', 'Source/Core/VideoCommon/Resources/ShaderResource.cpp', 'Source/Core/VideoCommon/Resources/TextureAndSamplerResource.cpp', 'Source/Core/VideoCommon/Resources/TextureDataResource.cpp']}], 'head_commit': {'id': '3c8388141325ac6ba9b399f16ee29ba34938e56f', 'tree_id': '799e3bbd968f96182c5a50dd3815ef85254411ed', 'distinct': True, 'message': 'VideoCommon: error if the same asset id is used with a different type', 'timestamp': '2026-11-07T00:38:39-05:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/3c8388141325ac6ba9b399f16ee29ba34938e56f', 'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-11-04T19:27:06-06:00', 'username': 'iwubcode'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-07T00:38:39-05:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['Source/Core/VideoCommon/Assets/CustomAssetCache.cpp', 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'Source/Core/VideoCommon/Resources/MaterialResource.cpp', 'Source/Core/VideoCommon/Resources/ShaderResource.cpp', 'Source/Core/VideoCommon/Resources/TextureAndSamplerResource.cpp', 'Source/Core/VideoCommon/Resources/TextureDataResource.cpp']}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T04:20:56.808730 {'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4500068851', 'pull_request_review_id': 5810049696, 'id': 4500068851, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDmZ8w', 'diff_hunk': "@@ -299,8 +340,25 @@ bool SwapChain::CreateSwapChain()\n VkExtent2D size = surface_capabilities.currentExtent;\n if (size.width == UINT32_MAX)\n {\n- size.width = std::max(g_presenter->GetBackbufferWidth(), 1);\n- size.height = std::max(g_presenter->GetBackbufferHeight(), 1);\n+ // The surface doesn't know its size (Wayland), so use the size the host window reported.\n+ // (The presenter doesn't exist yet when the swap chain is first created.)\n+ const auto [requested_width, requested_height] =\n+ g_presenter ? g_presenter->GetRequestedSurfaceSize() : std::pair<u32, u32>{};\n+ if (requested_width != 0 && requested_height != 0)\n+ {\n+ size.width = requested_width;\n+ size.height = requested_height;\n+ }\n+ else if (m_wsi.render_surface_width > 0 && m_wsi.render_surface_height > 0)\n+ {\n+ size.width = m_wsi.render_surface_width;\n+ size.height = m_wsi.render_surface_height;\n+ }\n+ else\n+ {\n+ size.width = g_presenter ? std::max(g_presenter->GetBackbufferWidth(), 1) : 1;", 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Thanks! `GetBackbufferWidth`/`Height` had no users left, so I removed them. `GetNewSurfaceSize` is now the only size getter.\r\n\r\nI've kept the fields separate because they hold different values:\r\n\r\n- [`m_backbuffer_*`](https://github.com/ellierocks/dolphin/blob/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45/Source/Core/VideoCommon/Present.h#L140-L141) is the size of the swap chain being presented to. The backend sets it in [`SetBackbuffer`](https://github.com/ellierocks/dolphin/blob/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45/Source/Core/VideoCommon/Present.cpp#L327-L337), and the GPU thread reads it without a lock.\r\n- [`m_new_surface_*`](https://github.com/ellierocks/dolphin/blob/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45/Source/Core/VideoCommon/Present.h#L145-L147) is the size the window just asked for. The UI thread writes it under `m_swap_mutex`, the same way `ChangeSurface` handles `m_new_surface_handle`. The backend [picks it up](https://github.com/ellierocks/dolphin/blob/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45/Source/Core/VideoBackends/Vulkan/VKGfx.cpp#L400-L403) and reports the size it actually got.\r\n\r\nIf they were merged, the GPU thread could draw for a size the swap chain doesn't have yet, which is also a data race. `SetBackbuffer` would also stop seeing the size change, so `OnBackbufferSet` would be skipped. If you'd still prefer a single field, I could pass the size along with the resize request instead.", 'created_at': '2026-11-07T04:20:54Z', 'updated_at': '2026-11-07T04:20:54Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4500068851', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4500068851'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4500068851'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4500068851/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': None, 'original_line': 359, 'side': 'RIGHT', 'in_reply_to_id': 4499334392, 'author_association': 'NONE', 'original_position': 132, 'position': 1, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T04:17:51Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'd8d634176045b157d3abb6d67fc514daf0e6c752', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T04:17:50Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520528, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T04:20:56.807820 {'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5810049696, 'node_id': 'PRR_kwDOALCn2M8AAAABWk5SoA', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5810049696', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5810049696'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'submitted_at': '2026-11-07T04:20:54Z', 'updated_at': '2026-11-07T04:20:54Z', 'author_association': 'NONE'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T04:17:51Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'd8d634176045b157d3abb6d67fc514daf0e6c752', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T04:17:50Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520528, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T04:17:53.718292 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 14962, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T04:17:51Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T04:17:50Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c6c1c47eb788194fc7c4f4d85c7b28778f87bd45'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 28, 'review_comments': 14, 'maintainer_can_modify': True, 'commits': 11, 'additions': 1762, 'deletions': 55, 'changed_files': 42}, 'before': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'after': 'c6c1c47eb788194fc7c4f4d85c7b28778f87bd45', 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:31:07.889600 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 28, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:31:05Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/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/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6701679169', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6701679169', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6701679169, 'node_id': 'IC_kwDOALCn2M8AAAABj3OCQQ', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-07T03:31:05Z', 'updated_at': '2026-11-07T03:31:05Z', 'body': 'Rebased with the review feedback folded into the relevant commits.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6701679169/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:30:51.009163 {'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499872484', 'pull_request_review_id': 5809806361, 'id': 4499872484, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDaa5A', 'diff_hunk': "@@ -299,8 +340,25 @@ bool SwapChain::CreateSwapChain()\n VkExtent2D size = surface_capabilities.currentExtent;\n if (size.width == UINT32_MAX)\n {\n- size.width = std::max(g_presenter->GetBackbufferWidth(), 1);\n- size.height = std::max(g_presenter->GetBackbufferHeight(), 1);\n+ // The surface doesn't know its size (Wayland), so use the size the host window reported.\n+ // (The presenter doesn't exist yet when the swap chain is first created.)\n+ const auto [requested_width, requested_height] =\n+ g_presenter ? g_presenter->GetRequestedSurfaceSize() : std::pair<u32, u32>{};\n+ if (requested_width != 0 && requested_height != 0)\n+ {\n+ size.width = requested_width;\n+ size.height = requested_height;\n+ }\n+ else if (m_wsi.render_surface_width > 0 && m_wsi.render_surface_height > 0)\n+ {\n+ size.width = m_wsi.render_surface_width;\n+ size.height = m_wsi.render_surface_height;\n+ }\n+ else\n+ {\n+ size.width = g_presenter ? std::max(g_presenter->GetBackbufferWidth(), 1) : 1;", 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I think you took a step in the right direction but `GetBackbufferWidth`/`Height` and `GetSurfaceSize` still both exist.\r\n\r\n`m_backbuffer_width`/`height` and `m_surface_width`/`height` both exist.\r\n\r\nShouldn't these be merged?", 'created_at': '2026-11-07T03:30:48Z', 'updated_at': '2026-11-07T03:30:49Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499872484', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499872484'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499872484'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499872484/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': None, 'original_line': 359, 'side': 'RIGHT', 'in_reply_to_id': 4499334392, 'author_association': 'MEMBER', 'original_position': 132, 'position': 1, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:22:01Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:30:51.007067 {'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5809806361, 'node_id': 'PRR_kwDOALCn2M8AAAABWkqcGQ', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809806361', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809806361'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'submitted_at': '2026-11-07T03:30:48Z', 'updated_at': '2026-11-07T03:30:48Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:22:01Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:22:03.750081 {'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5809756138, 'node_id': 'PRR_kwDOALCn2M8AAAABWknX6g', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809756138', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809756138'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'submitted_at': '2026-11-07T03:22:01Z', 'updated_at': '2026-11-07T03:22:01Z', 'author_association': 'NONE'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:20:06Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:22:03.276034 {'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499838467', 'pull_request_review_id': 5809756138, 'id': 4499838467, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDYWAw', 'diff_hunk': "@@ -299,8 +340,25 @@ bool SwapChain::CreateSwapChain()\n VkExtent2D size = surface_capabilities.currentExtent;\n if (size.width == UINT32_MAX)\n {\n- size.width = std::max(g_presenter->GetBackbufferWidth(), 1);\n- size.height = std::max(g_presenter->GetBackbufferHeight(), 1);\n+ // The surface doesn't know its size (Wayland), so use the size the host window reported.\n+ // (The presenter doesn't exist yet when the swap chain is first created.)\n+ const auto [requested_width, requested_height] =\n+ g_presenter ? g_presenter->GetRequestedSurfaceSize() : std::pair<u32, u32>{};\n+ if (requested_width != 0 && requested_height != 0)\n+ {\n+ size.width = requested_width;\n+ size.height = requested_height;\n+ }\n+ else if (m_wsi.render_surface_width > 0 && m_wsi.render_surface_height > 0)\n+ {\n+ size.width = m_wsi.render_surface_width;\n+ size.height = m_wsi.render_surface_height;\n+ }\n+ else\n+ {\n+ size.width = g_presenter ? std::max(g_presenter->GetBackbufferWidth(), 1) : 1;", 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Good point, I\'ve combined them. There\'s now one resize path: `Presenter::ResizeSurface(width, height)` takes the size in pixels on every platform. Qt\'s `Host` already had the size, and the NoGUI Win32, X11 and macOS callers now pass the size from their resize events.\r\n\r\nBackends that can query the surface still do, so nothing changes for them. This is in the VideoCommon commit, which I renamed to "Report the window size with surface resizes".', 'created_at': '2026-11-07T03:22:01Z', 'updated_at': '2026-11-07T03:22:01Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499838467', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499838467'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499838467'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499838467/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': None, 'original_line': 359, 'side': 'RIGHT', 'in_reply_to_id': 4499334392, 'author_association': 'NONE', 'original_position': 132, 'position': 1, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:20:06Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:20:10.078998 {'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5809748693, 'node_id': 'PRR_kwDOALCn2M8AAAABWkm61Q', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809748693', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809748693'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'submitted_at': '2026-11-07T03:20:06Z', 'updated_at': '2026-11-07T03:20:06Z', 'author_association': 'NONE'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:19:35Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:20:08.821994 {'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499832197', 'pull_request_review_id': 5809748693, 'id': 4499832197, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDX9hQ', 'diff_hunk': '@@ -84,6 +84,29 @@ VkSurfaceKHR SwapChain::CreateVulkanSurface(VkInstance instance, const WindowSys\n }\n #endif\n \n+#if defined(VK_USE_PLATFORM_WAYLAND_KHR)\n+ if (wsi.type == WindowSystemType::Wayland)\n+ {\n+ VkWaylandSurfaceCreateInfoKHR surface_create_info = {\n+ VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, // VkStructureType sType\n+ nullptr, // const void* pNext\n+ 0, // VkWaylandSurfaceCreateFlagsKHR flags\n+ static_cast<wl_display*>(wsi.display_connection), // struct wl_display* display\n+ static_cast<wl_surface*>(wsi.render_surface) // struct wl_surface* surface', 'path': 'Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp', 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'That was the only struct the branch adds with the end-of-line comments. The others in that file are existing code, so I left them alone.', 'created_at': '2026-11-07T03:20:06Z', 'updated_at': '2026-11-07T03:20:07Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499832197', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499832197'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499832197'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499832197/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': None, 'original_start_line': 91, 'start_side': 'RIGHT', 'line': None, 'original_line': 95, 'side': 'RIGHT', 'in_reply_to_id': 4499205346, 'author_association': 'NONE', 'original_position': 12, 'position': 1, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:19:35Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T03:19:39Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:19:37.959748 {'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499830620', 'pull_request_review_id': 5809746897, 'id': 4499830620, 'node_id': 'PRRC_kwDOALCn2M8AAAABDDX3XA', 'diff_hunk': '@@ -36,6 +40,34 @@\n #include <dwmapi.h>\n #endif\n \n+#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__HAIKU__)\n+#include <qpa/qplatformnativeinterface.h>\n+#endif\n+\n+namespace\n+{\n+bool IsWayland()\n+{\n+ return QGuiApplication::platformName().startsWith(QStringLiteral("wayland"));', 'path': 'Source/Core/DolphinQt/RenderWidget.cpp', 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'original_commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Moved it to `QtUtils::IsWayland()`. It's added in the RenderWidget commit, where it's first used, and the BalloonTip commit now uses it instead of its own copy.", 'created_at': '2026-11-07T03:19:35Z', 'updated_at': '2026-11-07T03:19:35Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499830620', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499830620'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#discussion_r4499830620'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4499830620/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': None, 'original_line': 51, 'side': 'RIGHT', 'in_reply_to_id': 4499182957, 'author_association': 'NONE', 'original_position': 23, 'position': 1, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:18:04Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T00:32:51Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T00:32:51Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:19:37.554573 {'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5809746897, 'node_id': 'PRR_kwDOALCn2M8AAAABWkmz0Q', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809746897', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962#pullrequestreview-5809746897'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}}, 'submitted_at': '2026-11-07T03:19:35Z', 'updated_at': '2026-11-07T03:19:35Z', 'author_association': 'NONE'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:18:04Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f53d66134a1aefbaecbe2477c810b83a74d089d9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T00:32:51Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T00:32:51Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-07T03:18:05.980266 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 14962, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'id': 5084147281, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'number': 14962, 'state': 'open', 'locked': False, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-07T03:18:04Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '13abcff242505918253d264619954514749f44da', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'head': {'label': 'ellierocks:wayland-upstream', 'ref': 'wayland-upstream', 'sha': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1439547083, 'node_id': 'R_kgDOVc2-yw', 'name': 'dolphin', 'full_name': 'ellierocks/dolphin', 'private': False, 'owner': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/ellierocks/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/ellierocks/dolphin', 'forks_url': 'https://api.github.com/repos/ellierocks/dolphin/forks', 'keys_url': 'https://api.github.com/repos/ellierocks/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/ellierocks/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/ellierocks/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/ellierocks/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/ellierocks/dolphin/events', 'assignees_url': 'https://api.github.com/repos/ellierocks/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/ellierocks/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/ellierocks/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/ellierocks/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/ellierocks/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/ellierocks/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/ellierocks/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/ellierocks/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/ellierocks/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/ellierocks/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/ellierocks/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/ellierocks/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/ellierocks/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/ellierocks/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/ellierocks/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/ellierocks/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/ellierocks/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/ellierocks/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/ellierocks/dolphin/merges', 'archive_url': 'https://api.github.com/repos/ellierocks/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/ellierocks/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/ellierocks/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/ellierocks/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/ellierocks/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/ellierocks/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/ellierocks/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/ellierocks/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/ellierocks/dolphin/deployments', 'created_at': '2026-10-30T09:54:05Z', 'updated_at': '2026-10-30T09:54:05Z', 'pushed_at': '2026-11-07T03:18:02Z', 'git_url': 'git://github.com/ellierocks/dolphin.git', 'ssh_url': 'git@github.com:ellierocks/dolphin.git', 'clone_url': 'https://github.com/ellierocks/dolphin.git', 'svn_url': 'https://github.com/ellierocks/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520542, 'stargazers_count': 0, 'watchers_count': 0, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, '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', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '4a70679d0adcd17220568f5c18d2d4005eeea0a2', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T00:32:51Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': True, 'allow_rebase_merge': False, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14962'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e135a01fdc3246260ffc5d22ae8e51ce3f3278f4'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 27, 'review_comments': 10, 'maintainer_can_modify': True, 'commits': 11, 'additions': 1760, 'deletions': 52, 'changed_files': 42}, 'before': '63a36f21071817a58a3c69c7cbfd298323dfd292', 'after': 'e135a01fdc3246260ffc5d22ae8e51ce3f3278f4', 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-07T00:32:51Z', 'pushed_at': '2026-11-06T01:29:35Z', 'git_url': 'git://github.com/dolphin-emu/dolphin.git', 'ssh_url': 'git@github.com:dolphin-emu/dolphin.git', 'clone_url': 'https://github.com/dolphin-emu/dolphin.git', 'svn_url': 'https://github.com/dolphin-emu/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563814, 'stargazers_count': 15773, 'watchers_count': 15773, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3381, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3381, 'open_issues': 482, 'watchers': 15773, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}