Status for Dolphin Central
Recent events
2026-11-13T23:51:51.718771 {'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,leoetlino,OatmealDome,CrossVR,iwubcode,Tilka,degasus,Pokechu22,linkmauve,AdmiralCurtiss,JosJuice,jordan-woyak,Dentomologist')", 'type': 'internal_log'}
2026-11-13T23:51:51.390901 {'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-13T23:51:21.049789 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 15007, 'type': 'pull_request_fifoci_status'}
2026-11-13T23:51:20.374179 {'source': 'webserver', 'raw': {'buildid': 198693, 'number': 9672, 'builderid': 10, 'buildrequestid': 199389, 'workerid': 5, 'masterid': 1, 'started_at': 1794612876, 'complete_at': 1794613869, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builderid': [10, 'Builder'], 'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'pr_id': [15007, 'Trigger'], 'repository': ['', 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'buildnumber': [9672, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'branchname': ['pr-15007', 'Trigger'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'warnings-count': [3, 'WarningCountingShellCommand'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-ogl-lin-mesa', 'Worker']}, 'buildrequest': {'buildrequestid': 199389, 'buildsetid': 44545, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1794612876, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/9672'}, 'type': 'raw_bb_hook'}
2026-11-13T23:51:15.918380 {'source': 'webserver', 'raw': {'buildid': 198694, 'number': 5658, 'builderid': 41, 'buildrequestid': 199391, 'workerid': 5, 'masterid': 1, 'started_at': 1794613869, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'branchname': ['pr-15007', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'codebase': ['', 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [41, 'Builder'], 'branch': ['refs/pull/15007/head', 'Build'], 'repository': ['', 'Build'], 'pr_id': [15007, 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'buildnumber': [5658, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 199391, 'buildsetid': 44545, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1794613869, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/5658'}, 'type': 'raw_bb_hook'}
2026-11-13T23:50:05.729450 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:50:04.220348 {'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-13T23:45:04.219950 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:45:02.615654 {'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-13T23:41:52.155157 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 15007, 'type': 'pull_request_fifoci_status'}
2026-11-13T23:41:51.531947 {'source': 'webserver', 'raw': {'buildid': 198692, 'number': 9347, 'builderid': 19, 'buildrequestid': 199387, 'workerid': 8, 'masterid': 1, 'started_at': 1794612647, 'complete_at': 1794613301, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'pr_id': [15007, 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'workername': ['osx-m1', 'Worker'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-15007', 'Trigger'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mvk-osx-m1', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builderid': [19, 'Builder'], 'buildnumber': [9347, 'Build'], 'repository': ['', 'Build'], 'warnings-count': [114, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 199387, 'buildsetid': 44544, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1794612647, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611987, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44544, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794611987, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198683, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198683, 'number': 11046, 'builderid': 7, 'buildrequestid': 199375, 'workerid': 8, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611987, '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/9347'}, 'type': 'raw_bb_hook'}
2026-11-13T23:41:51.390663 {'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,leoetlino,OatmealDome,CrossVR,iwubcode,Tilka,degasus,Pokechu22,linkmauve,AdmiralCurtiss,JosJuice,jordan-woyak,Dentomologist')", 'type': 'internal_log'}
2026-11-13T23:41:51.075841 {'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-13T23:40:02.615324 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:40:01.059953 {'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-13T23:35:01.059631 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:34:59.232551 {'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-13T23:34:48.264373 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 15007, 'type': 'pull_request_fifoci_status'}
2026-11-13T23:34:48.019168 {'source': 'webserver', 'raw': {'buildid': 198693, 'number': 9672, 'builderid': 10, 'buildrequestid': 199389, 'workerid': 5, 'masterid': 1, 'started_at': 1794612876, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'builderid': [10, 'Builder'], 'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'pr_id': [15007, 'Trigger'], 'repository': ['', 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'buildnumber': [9672, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-15007', 'Trigger'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker']}, 'buildrequest': {'buildrequestid': 199389, 'buildsetid': 44545, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1794612876, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/9672'}, 'type': 'raw_bb_hook'}
2026-11-13T23:34:47.652288 {'source': 'webserver', 'raw': {'buildid': 198689, 'number': 9671, 'builderid': 35, 'buildrequestid': 199390, 'workerid': 5, 'masterid': 1, 'started_at': 1794612035, 'complete_at': 1794612876, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Trigger'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9671, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'warnings-count': [3, 'WarningCountingShellCommand'], 'pr_id': [15007, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'repository': ['', 'Build'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'builderid': [35, 'Builder'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-sw-lin-mesa', 'Worker']}, 'buildrequest': {'buildrequestid': 199390, 'buildsetid': 44545, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1794612035, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/9671'}, 'type': 'raw_bb_hook'}
2026-11-13T23:31:51.075637 {'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,leoetlino,OatmealDome,CrossVR,iwubcode,Tilka,degasus,Pokechu22,linkmauve,AdmiralCurtiss,JosJuice,jordan-woyak,Dentomologist')", 'type': 'internal_log'}
2026-11-13T23:31:50.716916 {'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-13T23:30:58.958548 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 15007, 'type': 'pull_request_fifoci_status'}
2026-11-13T23:30:58.367760 {'source': 'webserver', 'raw': {'buildid': 198692, 'number': 9347, 'builderid': 19, 'buildrequestid': 199387, 'workerid': 8, 'masterid': 1, 'started_at': 1794612647, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'pr_id': [15007, 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'workername': ['osx-m1', 'Worker'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-15007', 'Trigger'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builderid': [19, 'Builder'], 'buildnumber': [9347, 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 199387, 'buildsetid': 44544, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1794612647, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611987, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44544, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794611987, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198683, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198683, 'number': 11046, 'builderid': 7, 'buildrequestid': 199375, 'workerid': 8, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611987, '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/9347'}, 'type': 'raw_bb_hook'}
2026-11-13T23:30:58.223210 {'source': 'webserver', 'raw': {'buildid': 198688, 'number': 9349, 'builderid': 21, 'buildrequestid': 199388, 'workerid': 8, 'masterid': 1, 'started_at': 1794611987, 'complete_at': 1794612647, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Trigger'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'pr_id': [15007, 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'builderid': [21, 'Builder'], 'buildnumber': [9349, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'codebase': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mtl-osx-m1', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'workername': ['osx-m1', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'warnings-count': [114, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 199388, 'buildsetid': 44544, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1794611987, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611987, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44544, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794611987, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198683, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198683, 'number': 11046, 'builderid': 7, 'buildrequestid': 199375, 'workerid': 8, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611987, '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/9349'}, 'type': 'raw_bb_hook'}
Recent 'build_status' events
2026-11-13T23:30:33.942430 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-deb-dbg-x64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/1/builds/11026', 'description': 'Build succeeded on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-11-13T23:29:00.825108 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-win-dbg-x64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/31/builds/11035', 'description': 'Build succeeded on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-11-13T23:23:19.217994 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-win-dbg-x64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/31/builds/11035', 'description': 'Auto build in progress on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-11-13T23:23:18.738562 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-win-arm64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/13/builds/11027', 'description': 'Build succeeded on builder pr-win-arm64', 'type': 'build_status'}
2026-11-13T23:21:58.992571 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-flatpak-x64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/43/builds/6175', 'description': 'Build succeeded on builder pr-flatpak-x64', 'type': 'build_status'}
2026-11-13T23:21:55.866550 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-android', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/22/builds/11033', 'description': 'Build succeeded on builder pr-android', 'type': 'build_status'}
2026-11-13T23:21:17.718962 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-ubu-x64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/27/builds/11027', 'description': 'Build succeeded on builder pr-ubu-x64', 'type': 'build_status'}
2026-11-13T23:21:16.672954 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-deb-dbg-x64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/1/builds/11026', 'description': 'Auto build in progress on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-11-13T23:21:16.202203 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-deb-x64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/26/builds/11025', 'description': 'Build succeeded on builder pr-deb-x64', 'type': 'build_status'}
2026-11-13T23:21:15.435800 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-appimage-x64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/49/builds/279', 'description': 'Build succeeded on builder pr-appimage-x64', 'type': 'build_status'}
2026-11-13T23:20:33.110034 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-osx-universal', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/7/builds/11046', 'description': 'Build succeeded on builder pr-osx-universal', 'type': 'build_status'}
2026-11-13T23:20:17.381961 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-flatpak-arm64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/44/builds/6119', 'description': 'Build succeeded on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-11-13T23:18:32.572394 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-appimage-arm64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/50/builds/273', 'description': 'Build succeeded on builder pr-appimage-arm64', 'type': 'build_status'}
2026-11-13T23:14:42.878727 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-win-arm64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/13/builds/11027', 'description': 'Auto build in progress on builder pr-win-arm64', 'type': 'build_status'}
2026-11-13T23:14:42.405451 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-win-x64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/2/builds/11028', 'description': 'Build succeeded on builder pr-win-x64', 'type': 'build_status'}
2026-11-13T23:09:55.996116 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-freebsd-x64', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/11/builds/11037', 'description': 'Build succeeded on builder pr-freebsd-x64', 'type': 'build_status'}
2026-11-13T23:07:58.778284 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-ubu-x64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/27/builds/11027', 'description': 'Auto build in progress on builder pr-ubu-x64', 'type': 'build_status'}
2026-11-13T23:07:53.297397 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-osx-universal', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/7/builds/11046', 'description': 'Auto build in progress on builder pr-osx-universal', 'type': 'build_status'}
2026-11-13T23:07:37.497199 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'lint', 'pr': 15007, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/9/builds/11030', 'description': 'Build succeeded on builder lint', 'type': 'build_status'}
2026-11-13T23:07:36.763316 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-flatpak-x64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/43/builds/6175', 'description': 'Auto build in progress on builder pr-flatpak-x64', 'type': 'build_status'}
2026-11-13T23:07:36.289522 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-android', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/22/builds/11033', 'description': 'Auto build in progress on builder pr-android', 'type': 'build_status'}
2026-11-13T23:07:35.833603 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-flatpak-arm64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/44/builds/6119', 'description': 'Auto build in progress on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-11-13T23:07:35.190339 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-freebsd-x64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/11/builds/11037', 'description': 'Auto build in progress on builder pr-freebsd-x64', 'type': 'build_status'}
2026-11-13T23:07:34.639826 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-deb-x64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/26/builds/11025', 'description': 'Auto build in progress on builder pr-deb-x64', 'type': 'build_status'}
2026-11-13T23:07:34.187316 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'shortrev': '62e3ad', 'service': 'pr-appimage-arm64', 'pr': 15007, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/50/builds/273', 'description': 'Auto build in progress on builder pr-appimage-arm64', 'type': 'build_status'}
Recent 'command_message' events
2026-11-13T00:02:30.492010 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14976', 'type': 'command_message'}
2026-11-12T23:28:02.886066 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 15012', 'type': 'command_message'}
2026-11-12T23:27:53.285450 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 15011', 'type': 'command_message'}
2026-11-12T23:19:04.815828 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 15004', 'type': 'command_message'}
2026-11-12T20:17:41.674876 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 15018', 'type': 'command_message'}
2026-11-12T18:58:23.673992 {'source': 'discord', 'who': 'josjuice', 'what': '<@1320924779556900984> please rebuild 15005', 'type': 'command_message'}
2026-11-12T18:49:29.558474 {'source': 'discord', 'who': 'josjuice', 'what': '<@1320924779556900984> please rebuild 15004', 'type': 'command_message'}
2026-11-11T21:39:46.991154 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 15014', 'type': 'command_message'}
2026-11-11T19:59:16.680421 {'source': 'discord', 'who': 'joshuavandaele', 'what': '<@1320924779556900984> please rebuild 15012', 'type': 'command_message'}
2026-11-11T19:24:56.071860 {'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 15011', 'type': 'command_message'}
Recent 'dev_wark' events
2026-11-13T00:02:30.492058 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-12T23:28:02.886129 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-12T23:27:53.285487 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-12T23:19:04.815854 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-12T20:17:41.674912 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-11T21:39:46.991194 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-11T19:24:56.071916 {'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
Recent 'gh_issue_comment' events
2026-11-13T23:04:56.873096 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6867139863', 'safe_author': True, 'body': 'It sounds like this PR can be closed in favor of #15013 and #15021 ?', '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': 4, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-13T23:04:54Z', '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/6867139863', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6867139863', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6867139863, 'node_id': 'IC_kwDOALCn2M8AAAABmVA9Fw', '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-13T23:04:54Z', 'updated_at': '2026-11-13T23:04:54Z', 'body': 'It sounds like this PR can be closed in favor of #15013 and #15021 ?', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6867139863/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-13T22:08:30Z', 'pushed_at': '2026-11-13T22:08: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': 563847, 'stargazers_count': 15820, 'watchers_count': 15820, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3387, 'open_issues': 488, 'watchers': 15820, '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-13T21:47:18.840119 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'created', 'id': 18, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/18#issuecomment-6865726417', 'safe_author': False, 'body': 'Superseded by #20.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18', 'repository_url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/events', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'id': 6197696157, 'node_id': 'PR_kwDOCriaAc8AAAABMvbvuw', 'number': 18, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/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-11-04T06:31:59Z', 'updated_at': '2026-11-13T21:47:16Z', '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/netplay-index/pulls/18', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.patch', 'merged_at': None}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/e2b0f452bbf0e554c64e9d9ee922341c1c634d95"><code>e2b0f45</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3831">#3831</a> from bdarnell/final-6.6</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/90c4e3fd2c91a75a8e89a5cddd2caff803c4d361"><code>90c4e3f</code></a> Version bump for 6.6 final release</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ec17353e8c84ef20fe17eab4def51404ac56cbd8"><code>ec17353</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3828">#3828</a> from bdarnell/downstream-ci-66</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/15f66b043c5f1b69eff4088e90ee12b380d0d189"><code>15f66b0</code></a> ci: Add explicit read permission to CI jobs</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/444644112142d7033ffcae1b37e21f0a2cf024b2"><code>4446441</code></a> ci: Run the downstream testbed on a wheel built in the same run</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2e24d28a59433a41d77450b578f6be6028bad89"><code>c2e24d2</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3823">#3823</a> from bdarnell/claude/project-thread-uzh2s8</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2d8884b64c5131bc26ac0919cfcdb752784ba78"><code>c2d8884</code></a> test: Add pre-6.3 security fixes to the corpus</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/de32687e664d37fe35dd931e8f56bcfcb9b27ac5"><code>de32687</code></a> test: Add a regression corpus of past security fixes</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7848790399e6bdc272fc83d200345850f35de551"><code>7848790</code></a> maint: Add pre-tag checks and release instructions</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/f14321e4a07395b2f808afb66fc8d78f9c078829"><code>f14321e</code></a> ci: Compare benchmarks with the base branch on every PR</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.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/netplay-index/network/alerts).\n\n</details>', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/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/netplay-index/issues/18/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments/6865726417', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18#issuecomment-6865726417', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18', 'id': 6865726417, 'node_id': 'IC_kwDOCriaAc8AAAABmTqr0Q', '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-13T21:47:15Z', 'updated_at': '2026-11-13T21:47:15Z', 'body': 'Superseded by #20.', 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments/6865726417/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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, '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-13T18:14:25.966223 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Rumi-Larry', 'action': 'created', 'id': 14616, 'title': 'Allow the GBA core to load a GBC boot ROM', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14616#issuecomment-6861180522', 'safe_author': False, 'body': 'Why is this feature being sought when dedicated gb emulators exist? ', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14616', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14616/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14616/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14616/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14616', 'id': 4303968185, 'node_id': 'PR_kwDOALCn2M7UXiF1', 'number': 14616, 'title': 'Allow the GBA core to load a GBC boot ROM', 'user': {'login': 'max-m', 'id': 642457, 'node_id': 'MDQ6VXNlcjY0MjQ1Nw==', 'avatar_url': 'https://avatars.githubusercontent.com/u/642457?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/max-m', 'html_url': 'https://github.com/max-m', 'followers_url': 'https://api.github.com/users/max-m/followers', 'following_url': 'https://api.github.com/users/max-m/following{/other_user}', 'gists_url': 'https://api.github.com/users/max-m/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/max-m/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/max-m/subscriptions', 'organizations_url': 'https://api.github.com/users/max-m/orgs', 'repos_url': 'https://api.github.com/users/max-m/repos', 'events_url': 'https://api.github.com/users/max-m/events{/privacy}', 'received_events_url': 'https://api.github.com/users/max-m/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [{'id': 1667502011, 'node_id': 'MDU6TGFiZWwxNjY3NTAyMDEx', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/needs%20rebase', 'name': 'needs rebase', 'color': '053663', 'default': False, 'description': '', 'archived_at': None, 'archived_by': None}], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-04-21T16:26:59Z', 'updated_at': '2026-11-13T18:14:24Z', '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/14616', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14616', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14616.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14616.patch', 'merged_at': None}, 'body': 'This PR allows the GBA core to load a Game Boy Color boot ROM when it is loading a Game Boy or Game Boy Color game.\r\n\r\nI have split the PR into multiple commits because I thought the proposed UI changes may need to be discussed and are easily separated from the base commit.\r\n\r\nThe base commit adds the functionality required to load an optional Game Boy Color boot ROM and adds the basic UI elements to the Qt and Android versions.\r\nThe main logic in `Core::LoadCGBBootROM()` to call `GBIsCompatibleBIOS()` and update the model config when a compatible boot ROM is found was proposed by @endrift.\r\n\r\nThe second commit adds an optional parameter to the `ConfigUserPath` Qt widget, similar to the Android version’s `FilePicker` class, to allow it to be reset to its default value. As `ConfigUserPath` must not be empty there was no way to easily reset them to their default values from within the UI itself, short of resetting the complete config of Dolphin.\r\nI would have liked to integrate the reset button into the `ConfigUserPath` itself, but my knowledge of Qt was too limited, so this initial proposal requires users of `ConfigUserPath` to add a reset button on their own.\r\nIf this change is accepted, the other few places where `ConfigUserPath` is used should probably be changed to make use of the default value parameter and a reset button as well.\r\n\r\nThe third commit builds on top of the second one and makes use of this parameter to set the default values for the GBA BIOS and GBC boot ROM paths and adds the reset buttons to the UI.\r\n\r\nThe last commit adds a tooltip wrapper around `QLabel` because I wanted to add a description to the boot ROM option.\r\n\r\n> [!NOTE]\r\n> The linter might flag `Source/Core/Common/FileUtil.cpp`. At least my version of `clang-format` wanted to reformat line 77 and indent it with four spaces I ignored that change and didn’t add it to my changes.\r\n\r\n--------------------------------------------------------------------------------\r\n\r\n<details>\r\n<summary>Screenshots of the Qt interface</summary>\r\n\r\n<img width="300" alt="dolphin_gbp_settings" src="https://github.com/user-attachments/assets/fafa8604-31f1-4892-b196-9d60aef0d84a" />\r\n<img width="300" alt="dolphin_gbp_settings_tooltip" src="https://github.com/user-attachments/assets/f59fb856-12b5-46b3-b462-4ad24589301c" />\r\n\r\nWithout a boot ROM:\r\n[whichboot.gb](https://github.com/nitro2k01/whichboot.gb) patched to not advertise GBC support:\r\n<img width="300" alt="dolphin_whichboot_gb_only" src="https://github.com/user-attachments/assets/c18ab1c2-dbfb-41e1-a6f6-3e29209d4064" />\r\nAs expected, mGBA emulates a Game Boy now.\r\n\r\nThe unmodified version of `whichboot.gb`:\r\n<img width="300" alt="dolphin_whichboot" src="https://github.com/user-attachments/assets/7acd2947-103c-4270-924b-9a4a908bae3a" />\r\nmGBA is running in GBA-mode now.\r\n\r\nWith the GBC boot ROM:\r\n<img width="300" alt="dolphin_cgb_splash" src="https://github.com/user-attachments/assets/cd7d3226-8a80-41cf-89d2-def2c2ab9b8b" />\r\n<img width="300" alt="dolphin_whichboot_cgb_boot_rom" src="https://github.com/user-attachments/assets/ee3e1dbe-f9c1-4a38-b768-6bf71b8c0a18" />\r\nAs we can see, mGBA is detected as a Game Boy Advance, not as a Game Boy color as it should, because [it patches the `B` register to match the GBA’s version of the GBC boot ROM](https://github.com/mgba-emu/mgba/blob/f8082d31fb3ef6af15226e74229d6a5aaec526c6/src/gb/gb.c#L879-L882).\r\n\r\n</details>\r\n\r\n<details>\r\n<summary>Screenshot / Screencast of the Android interface</summary>\r\n<img width="300" alt="Android Game Boy Player settings" src="https://github.com/user-attachments/assets/2842205d-e8ee-4cbf-8675-43fd0c4a856f" />\r\n\r\n[android_dolphin_gbp_cgb_boot.webm](https://github.com/user-attachments/assets/cbb18032-da94-4f0e-91e8-01b301a06bc9)\r\n</details>\r\n\r\n--------------------------------------------------------------------------------\r\n\r\nI hope I didn’t forget anything. :thinking: ', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14616/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/14616/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6861180522', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14616#issuecomment-6861180522', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14616', 'id': 6861180522, 'node_id': 'IC_kwDOALCn2M8AAAABmPVOag', 'user': {'login': 'Rumi-Larry', 'id': 65569725, 'node_id': 'MDQ6VXNlcjY1NTY5NzI1', 'avatar_url': 'https://avatars.githubusercontent.com/u/65569725?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Rumi-Larry', 'html_url': 'https://github.com/Rumi-Larry', 'followers_url': 'https://api.github.com/users/Rumi-Larry/followers', 'following_url': 'https://api.github.com/users/Rumi-Larry/following{/other_user}', 'gists_url': 'https://api.github.com/users/Rumi-Larry/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Rumi-Larry/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Rumi-Larry/subscriptions', 'organizations_url': 'https://api.github.com/users/Rumi-Larry/orgs', 'repos_url': 'https://api.github.com/users/Rumi-Larry/repos', 'events_url': 'https://api.github.com/users/Rumi-Larry/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Rumi-Larry/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-13T18:14:24Z', 'updated_at': '2026-11-13T18:14:24Z', 'body': 'Why is this feature being sought when dedicated gb emulators exist? ', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6861180522/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-13T15:17:35Z', 'pushed_at': '2026-11-13T02:00:37Z', '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': 563856, 'stargazers_count': 15818, 'watchers_count': 15818, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3385, 'open_issues': 489, 'watchers': 15818, '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': 'Rumi-Larry', 'id': 65569725, 'node_id': 'MDQ6VXNlcjY1NTY5NzI1', 'avatar_url': 'https://avatars.githubusercontent.com/u/65569725?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Rumi-Larry', 'html_url': 'https://github.com/Rumi-Larry', 'followers_url': 'https://api.github.com/users/Rumi-Larry/followers', 'following_url': 'https://api.github.com/users/Rumi-Larry/following{/other_user}', 'gists_url': 'https://api.github.com/users/Rumi-Larry/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Rumi-Larry/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Rumi-Larry/subscriptions', 'organizations_url': 'https://api.github.com/users/Rumi-Larry/orgs', 'repos_url': 'https://api.github.com/users/Rumi-Larry/repos', 'events_url': 'https://api.github.com/users/Rumi-Larry/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Rumi-Larry/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-13T15:01:37.313050 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': '65dph43039', 'action': 'created', 'id': 14826, 'title': 'Add IPv6 handling for NetPlay address paths', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14826#issuecomment-6856741355', 'safe_author': False, 'body': "Sorry, i shouldn't make a PR to main page. Thank you for your review 🥰", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14826', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14826/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14826/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14826/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14826', 'id': 5245762271, 'node_id': 'PR_kwDOALCn2M8AAAABA7wgiA', 'number': 14826, 'title': 'Add IPv6 handling for NetPlay address paths', 'user': {'login': '65dph43039', 'id': 187355778, 'node_id': 'U_kgDOCyrSgg', 'avatar_url': 'https://avatars.githubusercontent.com/u/187355778?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/65dph43039', 'html_url': 'https://github.com/65dph43039', 'followers_url': 'https://api.github.com/users/65dph43039/followers', 'following_url': 'https://api.github.com/users/65dph43039/following{/other_user}', 'gists_url': 'https://api.github.com/users/65dph43039/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/65dph43039/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/65dph43039/subscriptions', 'organizations_url': 'https://api.github.com/users/65dph43039/orgs', 'repos_url': 'https://api.github.com/users/65dph43039/repos', 'events_url': 'https://api.github.com/users/65dph43039/events{/privacy}', 'received_events_url': 'https://api.github.com/users/65dph43039/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-08-25T12:21:03Z', 'updated_at': '2026-11-13T15:01:34Z', 'closed_at': '2026-11-03T01:47:03Z', '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/14826', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14826', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14826.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14826.patch', 'merged_at': None}, 'body': None, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14826/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/14826/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6856741355', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14826#issuecomment-6856741355', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14826', 'id': 6856741355, 'node_id': 'IC_kwDOALCn2M8AAAABmLGR6w', 'user': {'login': '65dph43039', 'id': 187355778, 'node_id': 'U_kgDOCyrSgg', 'avatar_url': 'https://avatars.githubusercontent.com/u/187355778?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/65dph43039', 'html_url': 'https://github.com/65dph43039', 'followers_url': 'https://api.github.com/users/65dph43039/followers', 'following_url': 'https://api.github.com/users/65dph43039/following{/other_user}', 'gists_url': 'https://api.github.com/users/65dph43039/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/65dph43039/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/65dph43039/subscriptions', 'organizations_url': 'https://api.github.com/users/65dph43039/orgs', 'repos_url': 'https://api.github.com/users/65dph43039/repos', 'events_url': 'https://api.github.com/users/65dph43039/events{/privacy}', 'received_events_url': 'https://api.github.com/users/65dph43039/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-13T15:01:34Z', 'updated_at': '2026-11-13T15:01:34Z', 'body': "Sorry, i shouldn't make a PR to main page. Thank you for your review 🥰", 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6856741355/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-13T14:12:51Z', 'pushed_at': '2026-11-13T02:00:37Z', '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': 563856, 'stargazers_count': 15817, 'watchers_count': 15817, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3386, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3386, 'open_issues': 489, 'watchers': 15817, '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': '65dph43039', 'id': 187355778, 'node_id': 'U_kgDOCyrSgg', 'avatar_url': 'https://avatars.githubusercontent.com/u/187355778?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/65dph43039', 'html_url': 'https://github.com/65dph43039', 'followers_url': 'https://api.github.com/users/65dph43039/followers', 'following_url': 'https://api.github.com/users/65dph43039/following{/other_user}', 'gists_url': 'https://api.github.com/users/65dph43039/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/65dph43039/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/65dph43039/subscriptions', 'organizations_url': 'https://api.github.com/users/65dph43039/orgs', 'repos_url': 'https://api.github.com/users/65dph43039/repos', 'events_url': 'https://api.github.com/users/65dph43039/events{/privacy}', 'received_events_url': 'https://api.github.com/users/65dph43039/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-12T23:28:49.715156 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'acts-1631', 'action': 'created', 'id': 14924, 'title': 'TraversalServer: bound tracked client state', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14924#issuecomment-6838996147', 'safe_author': False, 'body': 'Friendly ping for this and https://github.com/dolphin-emu/dolphin/pull/14923. I have at least seven more security issues ready to address after these. Thank you.', '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': 3, 'created_at': '2026-10-07T22:10:07Z', 'updated_at': '2026-11-12T23:28:46Z', '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/6838996147', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14924#issuecomment-6838996147', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14924', 'id': 6838996147, 'node_id': 'IC_kwDOALCn2M8AAAABl6LMsw', '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}, 'created_at': '2026-11-12T23:28:46Z', 'updated_at': '2026-11-12T23:28:46Z', 'body': 'Friendly ping for this and https://github.com/dolphin-emu/dolphin/pull/14923. I have at least seven more security issues ready to address after these. Thank you.', 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6838996147/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-12T19:15:50Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15811, 'watchers_count': 15811, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3388, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 494, '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': 3388, 'open_issues': 494, 'watchers': 15811, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-12T19:00:50.377249 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15008, 'title': 'HW/WiimoteReal: Fix crash when UI disconnects a Balance Board.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15008#issuecomment-6833090918', 'safe_author': True, 'body': '> The Config.h include can be removed from the header file. LGTM otherwise.\r\n\r\nUnused headers removed.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15008', 'id': 6318771566, 'node_id': 'PR_kwDOALCn2M8AAAABOQG2hg', 'number': 15008, 'title': 'HW/WiimoteReal: Fix crash when UI disconnects a Balance Board.', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2026-11-11T00:26:50Z', 'updated_at': '2026-11-12T19:00:46Z', 'closed_at': None, 'assignee': None, 'author_association': 'MEMBER', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15008', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15008', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15008.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15008.patch', 'merged_at': None}, 'body': "Toggling off `Real Balance Board` triggers `Config::OnConfigChanged` which invokes `~Wiimote()` which invoked `RemoveConfigChangedCallback`.\n\nDespite `s_callbacks_lock` being a `recursive_mutex`, `OnConfigChanged` is really not prepared for callbacks to be added/removed from within another callback and this will generally cause a crash from invalided iterators.\n\nThis PR somewhat works around the underlying problem, it looks like RetroAchievements is also adding callbacks from within callbacks which won't end well.\n\nRegardless, `Wiimote` doesn't need this callback, it can just use the getters directly.\n\n\n", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008/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/15008/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6833090918', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15008#issuecomment-6833090918', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008', 'id': 6833090918, 'node_id': 'IC_kwDOALCn2M8AAAABl0ixZg', '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-12T19:00:46Z', 'updated_at': '2026-11-12T19:00:46Z', 'body': '> The Config.h include can be removed from the header file. LGTM otherwise.\r\n\r\nUnused headers removed.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6833090918/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-12T18:12:30Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15810, 'watchers_count': 15810, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3388, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 493, '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': 3388, 'open_issues': 493, 'watchers': 15810, '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-12T18:55:37.407048 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'created', 'id': 14890, 'title': 'Android: Fix UI text truncation in 4K TV UI', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14890#issuecomment-6832972682', 'safe_author': True, 'body': "This will be included in the next full release. It will probably before the end of the year, but we can't promise it.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14890', 'id': 5598406162, 'node_id': 'PR_kwDOALCn2M8AAAABFTH48Q', 'number': 14890, 'title': 'Android: Fix UI text truncation in 4K TV UI', 'user': {'login': 'lihanchen', 'id': 5497974, 'node_id': 'MDQ6VXNlcjU0OTc5NzQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5497974?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/lihanchen', 'html_url': 'https://github.com/lihanchen', 'followers_url': 'https://api.github.com/users/lihanchen/followers', 'following_url': 'https://api.github.com/users/lihanchen/following{/other_user}', 'gists_url': 'https://api.github.com/users/lihanchen/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/lihanchen/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/lihanchen/subscriptions', 'organizations_url': 'https://api.github.com/users/lihanchen/orgs', 'repos_url': 'https://api.github.com/users/lihanchen/repos', 'events_url': 'https://api.github.com/users/lihanchen/events{/privacy}', 'received_events_url': 'https://api.github.com/users/lihanchen/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-09-27T00:00:50Z', 'updated_at': '2026-11-12T18:55:34Z', 'closed_at': '2026-10-02T17:58:16Z', '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/14890', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14890', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14890.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14890.patch', 'merged_at': '2026-10-02T17:58:16Z'}, 'body': 'Before change:\r\n<img width="3840" height="2160" alt="Dolphin_Emulator_Shield2_main_homepage_adb_20260810_144621" src="https://github.com/user-attachments/assets/98e020e9-c908-4280-821a-f205c9d8bd06" />\r\n\r\nAfter Change:\r\n<img width="1680" height="959" alt="Screenshot 2026-09-26 at 4 54 38\u202fPM" src="https://github.com/user-attachments/assets/d231838f-bc6a-4e6a-a874-c2df8daa3750" />\r\n', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890/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/14890/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6832972682', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14890#issuecomment-6832972682', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890', 'id': 6832972682, 'node_id': 'IC_kwDOALCn2M8AAAABl0bjig', '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-12T18:55:33Z', 'updated_at': '2026-11-12T18:55:33Z', 'body': "This will be included in the next full release. It will probably before the end of the year, but we can't promise it.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6832972682/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-12T18:12:30Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15810, 'watchers_count': 15810, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3388, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 493, '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': 3388, 'open_issues': 493, 'watchers': 15810, '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-12T18:42:48.900725 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'created', 'id': 15008, 'title': 'HW/WiimoteReal: Fix crash when UI disconnects a Balance Board.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15008#issuecomment-6832675386', 'safe_author': True, 'body': 'The Config.h include can be removed from the header file. LGTM otherwise.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15008', 'id': 6318771566, 'node_id': 'PR_kwDOALCn2M8AAAABOQG2hg', 'number': 15008, 'title': 'HW/WiimoteReal: Fix crash when UI disconnects a Balance Board.', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-11-11T00:26:50Z', 'updated_at': '2026-11-12T18:42:46Z', 'closed_at': None, 'assignee': None, 'author_association': 'MEMBER', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15008', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15008', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15008.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15008.patch', 'merged_at': None}, 'body': "Toggling off `Real Balance Board` triggers `Config::OnConfigChanged` which invokes `~Wiimote()` which invoked `RemoveConfigChangedCallback`.\n\nDespite `s_callbacks_lock` being a `recursive_mutex`, `OnConfigChanged` is really not prepared for callbacks to be added/removed from within another callback and this will generally cause a crash from invalided iterators.\n\nThis PR somewhat works around the underlying problem, it looks like RetroAchievements is also adding callbacks from within callbacks which won't end well.\n\nRegardless, `Wiimote` doesn't need this callback, it can just use the getters directly.\n\n\n", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008/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/15008/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6832675386', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15008#issuecomment-6832675386', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15008', 'id': 6832675386, 'node_id': 'IC_kwDOALCn2M8AAAABl0JaOg', '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-12T18:42:46Z', 'updated_at': '2026-11-12T18:42:46Z', 'body': 'The Config.h include can be removed from the header file. LGTM otherwise.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6832675386/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-12T18:12:30Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15810, 'watchers_count': 15810, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3388, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 493, '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': 3388, 'open_issues': 493, 'watchers': 15810, '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-12T00:11:51.291421 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Tilka', 'action': 'created', 'id': 14995, 'title': 'AX: fix two bugs', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14995#issuecomment-6810407732', 'safe_author': True, 'body': "GameCube ucodes don't init the dpop values, so this code is now fully inside the ifdef.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14995', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14995/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14995/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14995/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14995', 'id': 6266940391, 'node_id': 'PR_kwDOALCn2M8AAAABNm1WiA', 'number': 14995, 'title': 'AX: fix two bugs', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2026-11-08T02:59:20Z', 'updated_at': '2026-11-12T00:11:49Z', 'closed_at': None, 'assignee': None, 'author_association': 'MEMBER', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14995', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14995', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14995.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14995.patch', 'merged_at': None}, 'body': "The de-pop issue was reported in #14988.\n\nThe CMD_SUB_TO_LR bug was found by staring. No idea which games actually use this command. I assume it's one of the surround schemes.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14995/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/14995/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810407732', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14995#issuecomment-6810407732', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14995', 'id': 6810407732, 'node_id': 'IC_kwDOALCn2M8AAAABle6TNA', '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-12T00:11:49Z', 'updated_at': '2026-11-12T00:11:49Z', 'body': "GameCube ucodes don't init the dpop values, so this code is now fully inside the ifdef.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810407732/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 492, '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': 3385, 'open_issues': 492, 'watchers': 15801, '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-11T23:56:08.669330 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 12014, 'title': 'Add CRT shaders', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12014#issuecomment-6810145143', 'safe_author': True, 'body': "> Neat! Do these use the same method as before (shaders must be added manually)? I just updated to the development version on my Android.\r\n\r\nIt's not clear what you're trying to ask. Please ask for support elsewhere.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'id': 1781462996, 'node_id': 'PR_kwDOALCn2M5URoxg', 'number': 12014, 'title': 'Add CRT shaders', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 44, 'created_at': '2023-06-29T20:23:15Z', 'updated_at': '2026-11-11T23:56:06Z', 'closed_at': '2026-11-11T20:08:28Z', '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/12014', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.patch', 'merged_at': '2026-11-11T20:08:28Z'}, 'body': "I've ported a couple of shaders from RetroArch - particularly the crt-pi and crt-lottes-fast ones. Unlike other shaders such as crt-royale, these shaders are single-pass, allowing them to work within Dolphin's framework. These look pretty good when paired with native resolution and SSAA.\r\n\r\ncrt-lottes-fast:\r\n\r\n\r\nunfiltered:\r\n\r\n\r\ncrt-pi:\r\n\r\n\r\nUnfortunately, I only noticed #11888 after I had already ported crt-pi. Still, crt-pi is specifically optimised for lower-end hardware (Raspberry Pis, in particular), so perhaps these shaders still have some utility.\r\n\r\nVarious settings have been exposed through Dolphin's configuration API, crt-pi in particular boasts extra options that even the RetroArch version does not due to being hardcoded within the GLSL code itself.\r\n\r\nBoth crt-pi and crt-lottes-fast run with every backend that I have tested (OpenGL, Vulkan, Direct3D 11, and Direct3D 12).", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/reactions', 'total_count': 34, '+1': 16, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 18, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810145143', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014#issuecomment-6810145143', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'id': 6810145143, 'node_id': 'IC_kwDOALCn2M8AAAABleqRdw', '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-11T23:56:06Z', 'updated_at': '2026-11-11T23:56:06Z', 'body': "> Neat! Do these use the same method as before (shaders must be added manually)? I just updated to the development version on my Android.\r\n\r\nIt's not clear what you're trying to ask. Please ask for support elsewhere.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810145143/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 492, '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': 3385, 'open_issues': 492, 'watchers': 15801, '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-11T23:52:15.130956 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'AmandaRoseChaqueta', 'action': 'edited', 'id': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6810015740', 'safe_author': False, 'body': 'Hopefully linux support can be re-added someday, cuz #14322 Only works for windows atm and this PR is the only one that supports linux.', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Hopefully linux support can be re-added someday, cuz #14322 Only works for windows atm.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'id': 3088686929, 'node_id': 'PR_kwDOALCn2M6Xgoop', 'number': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2025-05-24T19:39:27Z', 'updated_at': '2026-11-11T23:48:13Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': True, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13708', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.patch', 'merged_at': None}, 'body': 'This PR supersedes https://github.com/dolphin-emu/dolphin/pull/13645 and is based on https://github.com/dolphin-emu/dolphin/pull/13623.\r\n\r\nThe easiest way to test this PR is to change a Monster Hunter 3 save slot name.\r\n\r\n\r\nReady for reviewing and testing.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/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/13708/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810015740', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6810015740', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'id': 6810015740, 'node_id': 'IC_kwDOALCn2M8AAAABleiX_A', 'user': {'login': 'AmandaRoseChaqueta', 'id': 89411895, 'node_id': 'MDQ6VXNlcjg5NDExODk1', 'avatar_url': 'https://avatars.githubusercontent.com/u/89411895?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AmandaRoseChaqueta', 'html_url': 'https://github.com/AmandaRoseChaqueta', 'followers_url': 'https://api.github.com/users/AmandaRoseChaqueta/followers', 'following_url': 'https://api.github.com/users/AmandaRoseChaqueta/following{/other_user}', 'gists_url': 'https://api.github.com/users/AmandaRoseChaqueta/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AmandaRoseChaqueta/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AmandaRoseChaqueta/subscriptions', 'organizations_url': 'https://api.github.com/users/AmandaRoseChaqueta/orgs', 'repos_url': 'https://api.github.com/users/AmandaRoseChaqueta/repos', 'events_url': 'https://api.github.com/users/AmandaRoseChaqueta/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AmandaRoseChaqueta/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-11T23:48:13Z', 'updated_at': '2026-11-11T23:52:13Z', 'body': 'Hopefully linux support can be re-added someday, cuz #14322 Only works for windows atm and this PR is the only one that supports linux.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810015740/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 492, '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': 3385, 'open_issues': 492, 'watchers': 15801, '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': 'AmandaRoseChaqueta', 'id': 89411895, 'node_id': 'MDQ6VXNlcjg5NDExODk1', 'avatar_url': 'https://avatars.githubusercontent.com/u/89411895?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AmandaRoseChaqueta', 'html_url': 'https://github.com/AmandaRoseChaqueta', 'followers_url': 'https://api.github.com/users/AmandaRoseChaqueta/followers', 'following_url': 'https://api.github.com/users/AmandaRoseChaqueta/following{/other_user}', 'gists_url': 'https://api.github.com/users/AmandaRoseChaqueta/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AmandaRoseChaqueta/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AmandaRoseChaqueta/subscriptions', 'organizations_url': 'https://api.github.com/users/AmandaRoseChaqueta/orgs', 'repos_url': 'https://api.github.com/users/AmandaRoseChaqueta/repos', 'events_url': 'https://api.github.com/users/AmandaRoseChaqueta/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AmandaRoseChaqueta/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T23:49:34.046694 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Daddu3', 'action': 'created', 'id': 12014, 'title': 'Add CRT shaders', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12014#issuecomment-6810037962', 'safe_author': False, 'body': 'Neat! Do these use the same method as before (shaders must be added manually)? I just updated to the development version on my Android.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'id': 1781462996, 'node_id': 'PR_kwDOALCn2M5URoxg', 'number': 12014, 'title': 'Add CRT shaders', 'user': {'login': 'Clownacy', 'id': 7667009, 'node_id': 'MDQ6VXNlcjc2NjcwMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7667009?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Clownacy', 'html_url': 'https://github.com/Clownacy', 'followers_url': 'https://api.github.com/users/Clownacy/followers', 'following_url': 'https://api.github.com/users/Clownacy/following{/other_user}', 'gists_url': 'https://api.github.com/users/Clownacy/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Clownacy/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Clownacy/subscriptions', 'organizations_url': 'https://api.github.com/users/Clownacy/orgs', 'repos_url': 'https://api.github.com/users/Clownacy/repos', 'events_url': 'https://api.github.com/users/Clownacy/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Clownacy/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 43, 'created_at': '2023-06-29T20:23:15Z', 'updated_at': '2026-11-11T23:49:31Z', 'closed_at': '2026-11-11T20:08:28Z', '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/12014', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/12014.patch', 'merged_at': '2026-11-11T20:08:28Z'}, 'body': "I've ported a couple of shaders from RetroArch - particularly the crt-pi and crt-lottes-fast ones. Unlike other shaders such as crt-royale, these shaders are single-pass, allowing them to work within Dolphin's framework. These look pretty good when paired with native resolution and SSAA.\r\n\r\ncrt-lottes-fast:\r\n\r\n\r\nunfiltered:\r\n\r\n\r\ncrt-pi:\r\n\r\n\r\nUnfortunately, I only noticed #11888 after I had already ported crt-pi. Still, crt-pi is specifically optimised for lower-end hardware (Raspberry Pis, in particular), so perhaps these shaders still have some utility.\r\n\r\nVarious settings have been exposed through Dolphin's configuration API, crt-pi in particular boasts extra options that even the RetroArch version does not due to being hardcoded within the GLSL code itself.\r\n\r\nBoth crt-pi and crt-lottes-fast run with every backend that I have tested (OpenGL, Vulkan, Direct3D 11, and Direct3D 12).", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/reactions', 'total_count': 34, '+1': 16, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 18, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810037962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/12014#issuecomment-6810037962', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/12014', 'id': 6810037962, 'node_id': 'IC_kwDOALCn2M8AAAABlejuyg', 'user': {'login': 'Daddu3', 'id': 53014019, 'node_id': 'MDQ6VXNlcjUzMDE0MDE5', 'avatar_url': 'https://avatars.githubusercontent.com/u/53014019?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Daddu3', 'html_url': 'https://github.com/Daddu3', 'followers_url': 'https://api.github.com/users/Daddu3/followers', 'following_url': 'https://api.github.com/users/Daddu3/following{/other_user}', 'gists_url': 'https://api.github.com/users/Daddu3/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Daddu3/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Daddu3/subscriptions', 'organizations_url': 'https://api.github.com/users/Daddu3/orgs', 'repos_url': 'https://api.github.com/users/Daddu3/repos', 'events_url': 'https://api.github.com/users/Daddu3/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Daddu3/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-11T23:49:31Z', 'updated_at': '2026-11-11T23:49:31Z', 'body': 'Neat! Do these use the same method as before (shaders must be added manually)? I just updated to the development version on my Android.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810037962/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 492, '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': 3385, 'open_issues': 492, 'watchers': 15801, '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': 'Daddu3', 'id': 53014019, 'node_id': 'MDQ6VXNlcjUzMDE0MDE5', 'avatar_url': 'https://avatars.githubusercontent.com/u/53014019?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Daddu3', 'html_url': 'https://github.com/Daddu3', 'followers_url': 'https://api.github.com/users/Daddu3/followers', 'following_url': 'https://api.github.com/users/Daddu3/following{/other_user}', 'gists_url': 'https://api.github.com/users/Daddu3/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Daddu3/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Daddu3/subscriptions', 'organizations_url': 'https://api.github.com/users/Daddu3/orgs', 'repos_url': 'https://api.github.com/users/Daddu3/repos', 'events_url': 'https://api.github.com/users/Daddu3/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Daddu3/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T23:48:15.478392 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'AmandaRoseChaqueta', 'action': 'created', 'id': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6810015740', 'safe_author': False, 'body': 'Hopefully linux support can be re-added someday, cuz #14322 Only works for windows atm.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'id': 3088686929, 'node_id': 'PR_kwDOALCn2M6Xgoop', 'number': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2025-05-24T19:39:27Z', 'updated_at': '2026-11-11T23:48:13Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': True, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13708', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.patch', 'merged_at': None}, 'body': 'This PR supersedes https://github.com/dolphin-emu/dolphin/pull/13645 and is based on https://github.com/dolphin-emu/dolphin/pull/13623.\r\n\r\nThe easiest way to test this PR is to change a Monster Hunter 3 save slot name.\r\n\r\n\r\nReady for reviewing and testing.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/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/13708/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810015740', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6810015740', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'id': 6810015740, 'node_id': 'IC_kwDOALCn2M8AAAABleiX_A', 'user': {'login': 'AmandaRoseChaqueta', 'id': 89411895, 'node_id': 'MDQ6VXNlcjg5NDExODk1', 'avatar_url': 'https://avatars.githubusercontent.com/u/89411895?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AmandaRoseChaqueta', 'html_url': 'https://github.com/AmandaRoseChaqueta', 'followers_url': 'https://api.github.com/users/AmandaRoseChaqueta/followers', 'following_url': 'https://api.github.com/users/AmandaRoseChaqueta/following{/other_user}', 'gists_url': 'https://api.github.com/users/AmandaRoseChaqueta/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AmandaRoseChaqueta/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AmandaRoseChaqueta/subscriptions', 'organizations_url': 'https://api.github.com/users/AmandaRoseChaqueta/orgs', 'repos_url': 'https://api.github.com/users/AmandaRoseChaqueta/repos', 'events_url': 'https://api.github.com/users/AmandaRoseChaqueta/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AmandaRoseChaqueta/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-11T23:48:13Z', 'updated_at': '2026-11-11T23:48:13Z', 'body': 'Hopefully linux support can be re-added someday, cuz #14322 Only works for windows atm.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6810015740/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 492, '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': 3385, 'open_issues': 492, 'watchers': 15801, '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': 'AmandaRoseChaqueta', 'id': 89411895, 'node_id': 'MDQ6VXNlcjg5NDExODk1', 'avatar_url': 'https://avatars.githubusercontent.com/u/89411895?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AmandaRoseChaqueta', 'html_url': 'https://github.com/AmandaRoseChaqueta', 'followers_url': 'https://api.github.com/users/AmandaRoseChaqueta/followers', 'following_url': 'https://api.github.com/users/AmandaRoseChaqueta/following{/other_user}', 'gists_url': 'https://api.github.com/users/AmandaRoseChaqueta/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AmandaRoseChaqueta/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AmandaRoseChaqueta/subscriptions', 'organizations_url': 'https://api.github.com/users/AmandaRoseChaqueta/orgs', 'repos_url': 'https://api.github.com/users/AmandaRoseChaqueta/repos', 'events_url': 'https://api.github.com/users/AmandaRoseChaqueta/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AmandaRoseChaqueta/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T22:33:30.257574 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6808688179', 'safe_author': True, 'body': "It could but my plan for this HID keyboard PR is to split it into smaller ones to get on top of https://dolp.in/pr14322. So I'd say it won't matter for the time being.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'id': 3088686929, 'node_id': 'PR_kwDOALCn2M6Xgoop', 'number': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 7, 'created_at': '2025-05-24T19:39:27Z', 'updated_at': '2026-11-11T22:33:28Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': True, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13708', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.patch', 'merged_at': None}, 'body': 'This PR supersedes https://github.com/dolphin-emu/dolphin/pull/13645 and is based on https://github.com/dolphin-emu/dolphin/pull/13623.\r\n\r\nThe easiest way to test this PR is to change a Monster Hunter 3 save slot name.\r\n\r\n\r\nReady for reviewing and testing.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/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/13708/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6808688179', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6808688179', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'id': 6808688179, 'node_id': 'IC_kwDOALCn2M8AAAABldRWMw', '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}, 'created_at': '2026-11-11T22:33:27Z', 'updated_at': '2026-11-11T22:33:27Z', 'body': "It could but my plan for this HID keyboard PR is to split it into smaller ones to get on top of https://dolp.in/pr14322. So I'd say it won't matter for the time being.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6808688179/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 492, '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': 3385, 'open_issues': 492, 'watchers': 15801, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T21:51:00.133601 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'AmandaRoseChaqueta', 'action': 'edited', 'id': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6807871766', 'safe_author': False, 'body': 'With #15012 superseding #13814, would that affect this PR too? This needed #13814 to be merged after all.', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'With #15012 superseding #13814, would that affect this PR? '}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'id': 3088686929, 'node_id': 'PR_kwDOALCn2M6Xgoop', 'number': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2025-05-24T19:39:27Z', 'updated_at': '2026-11-11T21:50:16Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': True, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13708', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.patch', 'merged_at': None}, 'body': 'This PR supersedes https://github.com/dolphin-emu/dolphin/pull/13645 and is based on https://github.com/dolphin-emu/dolphin/pull/13623.\r\n\r\nThe easiest way to test this PR is to change a Monster Hunter 3 save slot name.\r\n\r\n\r\nReady for reviewing and testing.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/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/13708/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807871766', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6807871766', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'id': 6807871766, 'node_id': 'IC_kwDOALCn2M8AAAABlcfhFg', 'user': {'login': 'AmandaRoseChaqueta', 'id': 89411895, 'node_id': 'MDQ6VXNlcjg5NDExODk1', 'avatar_url': 'https://avatars.githubusercontent.com/u/89411895?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AmandaRoseChaqueta', 'html_url': 'https://github.com/AmandaRoseChaqueta', 'followers_url': 'https://api.github.com/users/AmandaRoseChaqueta/followers', 'following_url': 'https://api.github.com/users/AmandaRoseChaqueta/following{/other_user}', 'gists_url': 'https://api.github.com/users/AmandaRoseChaqueta/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AmandaRoseChaqueta/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AmandaRoseChaqueta/subscriptions', 'organizations_url': 'https://api.github.com/users/AmandaRoseChaqueta/orgs', 'repos_url': 'https://api.github.com/users/AmandaRoseChaqueta/repos', 'events_url': 'https://api.github.com/users/AmandaRoseChaqueta/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AmandaRoseChaqueta/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-11T21:50:16Z', 'updated_at': '2026-11-11T21:50:58Z', 'body': 'With #15012 superseding #13814, would that affect this PR too? This needed #13814 to be merged after all.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807871766/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 492, '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': 3385, 'open_issues': 492, 'watchers': 15801, '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': 'AmandaRoseChaqueta', 'id': 89411895, 'node_id': 'MDQ6VXNlcjg5NDExODk1', 'avatar_url': 'https://avatars.githubusercontent.com/u/89411895?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AmandaRoseChaqueta', 'html_url': 'https://github.com/AmandaRoseChaqueta', 'followers_url': 'https://api.github.com/users/AmandaRoseChaqueta/followers', 'following_url': 'https://api.github.com/users/AmandaRoseChaqueta/following{/other_user}', 'gists_url': 'https://api.github.com/users/AmandaRoseChaqueta/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AmandaRoseChaqueta/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AmandaRoseChaqueta/subscriptions', 'organizations_url': 'https://api.github.com/users/AmandaRoseChaqueta/orgs', 'repos_url': 'https://api.github.com/users/AmandaRoseChaqueta/repos', 'events_url': 'https://api.github.com/users/AmandaRoseChaqueta/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AmandaRoseChaqueta/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T21:50:18.818380 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'AmandaRoseChaqueta', 'action': 'created', 'id': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6807871766', 'safe_author': False, 'body': 'With #15012 superseding #13814, would that affect this PR? ', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'id': 3088686929, 'node_id': 'PR_kwDOALCn2M6Xgoop', 'number': 13708, 'title': 'IOS/USB: Add "Connect USB Keyboard" support for HID', '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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2025-05-24T19:39:27Z', 'updated_at': '2026-11-11T21:50:16Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': True, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13708', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13708.patch', 'merged_at': None}, 'body': 'This PR supersedes https://github.com/dolphin-emu/dolphin/pull/13645 and is based on https://github.com/dolphin-emu/dolphin/pull/13623.\r\n\r\nThe easiest way to test this PR is to change a Monster Hunter 3 save slot name.\r\n\r\n\r\nReady for reviewing and testing.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708/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/13708/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807871766', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13708#issuecomment-6807871766', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13708', 'id': 6807871766, 'node_id': 'IC_kwDOALCn2M8AAAABlcfhFg', 'user': {'login': 'AmandaRoseChaqueta', 'id': 89411895, 'node_id': 'MDQ6VXNlcjg5NDExODk1', 'avatar_url': 'https://avatars.githubusercontent.com/u/89411895?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AmandaRoseChaqueta', 'html_url': 'https://github.com/AmandaRoseChaqueta', 'followers_url': 'https://api.github.com/users/AmandaRoseChaqueta/followers', 'following_url': 'https://api.github.com/users/AmandaRoseChaqueta/following{/other_user}', 'gists_url': 'https://api.github.com/users/AmandaRoseChaqueta/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AmandaRoseChaqueta/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AmandaRoseChaqueta/subscriptions', 'organizations_url': 'https://api.github.com/users/AmandaRoseChaqueta/orgs', 'repos_url': 'https://api.github.com/users/AmandaRoseChaqueta/repos', 'events_url': 'https://api.github.com/users/AmandaRoseChaqueta/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AmandaRoseChaqueta/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-11T21:50:16Z', 'updated_at': '2026-11-11T21:50:16Z', 'body': 'With #15012 superseding #13814, would that affect this PR? ', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807871766/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 492, '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': 3385, 'open_issues': 492, 'watchers': 15801, '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': 'AmandaRoseChaqueta', 'id': 89411895, 'node_id': 'MDQ6VXNlcjg5NDExODk1', 'avatar_url': 'https://avatars.githubusercontent.com/u/89411895?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/AmandaRoseChaqueta', 'html_url': 'https://github.com/AmandaRoseChaqueta', 'followers_url': 'https://api.github.com/users/AmandaRoseChaqueta/followers', 'following_url': 'https://api.github.com/users/AmandaRoseChaqueta/following{/other_user}', 'gists_url': 'https://api.github.com/users/AmandaRoseChaqueta/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/AmandaRoseChaqueta/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/AmandaRoseChaqueta/subscriptions', 'organizations_url': 'https://api.github.com/users/AmandaRoseChaqueta/orgs', 'repos_url': 'https://api.github.com/users/AmandaRoseChaqueta/repos', 'events_url': 'https://api.github.com/users/AmandaRoseChaqueta/events{/privacy}', 'received_events_url': 'https://api.github.com/users/AmandaRoseChaqueta/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T21:18:59.594116 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'edited', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6807209072', 'safe_author': False, 'body': 'I reported the iris GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\r\n\r\nIt turns out Dolphin already has BUG_SHARED_CONTEXT_SHADER_COMPILATION for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to InitDriverInfo() being called after PopulateConfig() and `iris` reporting GL_VENDOR as Intel instead of `Intel Open Source Technology Center, I opened #15013 to fix that.', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'I reported the iris GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\r\n\r\nIt turns out Dolphin already has BUG_SHARED_CONTEXT_SHADER_COMPILATION for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to InitDriverInfo() being called after PopulateConfig() and `iris` reporting GL_VENDOR as Intel instead of `Intel Open Source Technology Center" I opened #15013 to fix that .'}}, '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': 3, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-11T21:18: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/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/6807209072', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6807209072', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6807209072, 'node_id': 'IC_kwDOALCn2M8AAAABlb3EcA', '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}, 'created_at': '2026-11-11T21:15:47Z', 'updated_at': '2026-11-11T21:18:58Z', 'body': 'I reported the iris GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\r\n\r\nIt turns out Dolphin already has BUG_SHARED_CONTEXT_SHADER_COMPILATION for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to InitDriverInfo() being called after PopulateConfig() and `iris` reporting GL_VENDOR as Intel instead of `Intel Open Source Technology Center, I opened #15013 to fix that.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807209072/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 490, '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': 3385, 'open_issues': 490, 'watchers': 15801, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T21:18:42.167201 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'edited', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6807209072', 'safe_author': False, 'body': 'I reported the iris GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\r\n\r\nIt turns out Dolphin already has BUG_SHARED_CONTEXT_SHADER_COMPILATION for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to InitDriverInfo() being called after PopulateConfig() and `iris` reporting GL_VENDOR as Intel instead of `Intel Open Source Technology Center" I opened #15013 to fix that .', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'I reported the iris GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\r\n\r\nIt turns out Dolphin already has `BUG_SHARED_CONTEXT_SHADER_COMPILATION` for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to `InitDriverInfo()` being called after `PopulateConfig()` and `iris` reporting `GL_VENDOR` as `"Intel"` instead of `Intel Open Source Technology Center" I opened #15013 to fix that .'}}, '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': 3, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-11T21:18: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/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/6807209072', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6807209072', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6807209072, 'node_id': 'IC_kwDOALCn2M8AAAABlb3EcA', '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}, 'created_at': '2026-11-11T21:15:47Z', 'updated_at': '2026-11-11T21:18:40Z', 'body': 'I reported the iris GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\r\n\r\nIt turns out Dolphin already has BUG_SHARED_CONTEXT_SHADER_COMPILATION for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to InitDriverInfo() being called after PopulateConfig() and `iris` reporting GL_VENDOR as Intel instead of `Intel Open Source Technology Center" I opened #15013 to fix that .', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807209072/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 490, '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': 3385, 'open_issues': 490, 'watchers': 15801, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T21:18:21.025805 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'edited', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6807209072', 'safe_author': False, 'body': 'I reported the iris GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\r\n\r\nIt turns out Dolphin already has `BUG_SHARED_CONTEXT_SHADER_COMPILATION` for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to `InitDriverInfo()` being called after `PopulateConfig()` and `iris` reporting `GL_VENDOR` as `"Intel"` instead of `Intel Open Source Technology Center" I opened #15013 to fix that .', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'Update: I reported the `iris` GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\n\nIt turns out Dolphin already has `BUG_SHARED_CONTEXT_SHADER_COMPILATION` for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to `InitDriverInfo()` being called after `PopulateConfig()` and `iris` reporting `GL_VENDOR` as `"Intel"` instead of `"Intel Open Source Technology Center"`. I opened #15013 to fix that directly.'}}, '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': 3, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-11T21:17: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/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/6807209072', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6807209072', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6807209072, 'node_id': 'IC_kwDOALCn2M8AAAABlb3EcA', '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}, 'created_at': '2026-11-11T21:15:47Z', 'updated_at': '2026-11-11T21:18:19Z', 'body': 'I reported the iris GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\r\n\r\nIt turns out Dolphin already has `BUG_SHARED_CONTEXT_SHADER_COMPILATION` for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to `InitDriverInfo()` being called after `PopulateConfig()` and `iris` reporting `GL_VENDOR` as `"Intel"` instead of `Intel Open Source Technology Center" I opened #15013 to fix that .', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807209072/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 490, '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': 3385, 'open_issues': 490, 'watchers': 15801, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T21:17:19.427385 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'deleted', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6806913828', 'safe_author': False, 'body': 'heres the Issue for Mesa developers https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865', 'raw': {'action': 'deleted', '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': 4, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-11T21:15:47Z', '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/6806913828', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6806913828', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6806913828, 'node_id': 'IC_kwDOALCn2M8AAAABlblDJA', '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}, 'created_at': '2026-11-11T20:59:54Z', 'updated_at': '2026-11-11T20:59:54Z', 'body': 'heres the Issue for Mesa developers https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6806913828/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 490, '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': 3385, 'open_issues': 490, 'watchers': 15801, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T21:15:50.031149 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'created', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6807209072', 'safe_author': False, 'body': 'Update: I reported the `iris` GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\n\nIt turns out Dolphin already has `BUG_SHARED_CONTEXT_SHADER_COMPILATION` for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to `InitDriverInfo()` being called after `PopulateConfig()` and `iris` reporting `GL_VENDOR` as `"Intel"` instead of `"Intel Open Source Technology Center"`. I opened #15013 to fix that directly.', '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': 4, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-11T21:15:47Z', '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/6807209072', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6807209072', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6807209072, 'node_id': 'IC_kwDOALCn2M8AAAABlb3EcA', '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}, 'created_at': '2026-11-11T21:15:47Z', 'updated_at': '2026-11-11T21:15:47Z', 'body': 'Update: I reported the `iris` GPU hang upstream to Mesa (https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865) and also investigated why Dolphin was hitting it when async shader compilation is enabled.\n\nIt turns out Dolphin already has `BUG_SHARED_CONTEXT_SHADER_COMPILATION` for Linux Intel Mesa drivers to disable background shared-context compilation, but it was being bypassed due to `InitDriverInfo()` being called after `PopulateConfig()` and `iris` reporting `GL_VENDOR` as `"Intel"` instead of `"Intel Open Source Technology Center"`. I opened #15013 to fix that directly.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807209072/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 490, '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': 3385, 'open_issues': 490, 'watchers': 15801, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T21:13:39.459759 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'created', 'id': 15003, 'title': 'SI_DeviceGBA: Replace SFML network code with asio.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#issuecomment-6807168897', 'safe_author': True, 'body': "Also, apparently SFML is [problematic to package for Linux distributions](https://bugzilla.redhat.com/show_bug.cgi?id=2370213#c1) (at least, I suppose it is, considering it's blocked by at least a year, though I only checked Fedora), so that's another bonus for removing it.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15003', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15003/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15003/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15003/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003', 'id': 6301184091, 'node_id': 'PR_kwDOALCn2M8AAAABOB-OUA', 'number': 15003, 'title': 'SI_DeviceGBA: Replace SFML network code with asio.', '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}, 'labels': [{'id': 221809816, 'node_id': 'MDU6TGFiZWwyMjE4MDk4MTY=', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/RFC', 'name': 'RFC', 'color': 'FF6D00', 'default': False, 'description': 'Request for comments', 'archived_at': None, 'archived_by': None}], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-11-10T05:52:13Z', 'updated_at': '2026-11-11T21:13:37Z', 'closed_at': None, 'assignee': None, 'author_association': 'MEMBER', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15003.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15003.patch', 'merged_at': None}, 'body': 'I\'m proposing we replace SFML with [asio](https://think-async.com/Asio/).\n\nSFML is a sub-par network library.\nSome things I\'ve run into:\n- Setting raw socket options requires re-creating entire classes.\n1f823c880cf76f98699e2b1354b9beab0d459abb\n- Non-blocking sends aren\'t implemented correctly..\nhttps://github.com/SFML/SFML/blob/697745c6236d7f3b71ca89995d73b20e2ae35401/src/SFML/Network/TcpSocket.cpp#L1082\n- `sf::SocketSelector` can\'t be interrupted.\n\nIt provides almost no benefits over just using raw sockets, which we already do all over the place, and it just gets in the way.\n\nI think asio is perhaps the most mature modern-C++ networking library available.\nIt\'s header-only and has few modes of operation depending on what\'s convenient for the situation.\ne.g. You can use it as just a thin layer atop sockets, directly using read/write calls, or use "async" callbacks, or coroutines.. (I use all these in this PR).\nIt does unfortunately get more verbose when avoiding exceptions, requiring an `error_code` be passed to many functions, just like how `std::filesystem::exists(const std::filesystem::path& p, std::error_code& ec)` operates.\nIt really would shine a lot more if we allowed for some limited exception use.\n\nAnyway, this PR introduces asio and makes SI_DeviceGBA use it.\n\nIf people like this I\'ll replace the rest of our SFML code with asio so we can remove the SFML dependency.\nThe rest of our SFML uses are:\n- NetPlay. addressed in #15000\n- EXI/BBA\n- EXI/Gecko\n- WiimoteReal (just a simple UDP packet for logging)\n- DSUClient', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15003/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/15003/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807168897', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#issuecomment-6807168897', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15003', 'id': 6807168897, 'node_id': 'IC_kwDOALCn2M8AAAABlb0ngQ', 'user': {'login': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-11T21:13:37Z', 'updated_at': '2026-11-11T21:13:37Z', 'body': "Also, apparently SFML is [problematic to package for Linux distributions](https://bugzilla.redhat.com/show_bug.cgi?id=2370213#c1) (at least, I suppose it is, considering it's blocked by at least a year, though I only checked Fedora), so that's another bonus for removing it.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6807168897/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-11T21:08:43Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563830, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3385, 'open_issues': 489, 'watchers': 15801, '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': 'SuperSamus', 'id': 40663462, 'node_id': 'MDQ6VXNlcjQwNjYzNDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/40663462?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/SuperSamus', 'html_url': 'https://github.com/SuperSamus', 'followers_url': 'https://api.github.com/users/SuperSamus/followers', 'following_url': 'https://api.github.com/users/SuperSamus/following{/other_user}', 'gists_url': 'https://api.github.com/users/SuperSamus/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/SuperSamus/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/SuperSamus/subscriptions', 'organizations_url': 'https://api.github.com/users/SuperSamus/orgs', 'repos_url': 'https://api.github.com/users/SuperSamus/repos', 'events_url': 'https://api.github.com/users/SuperSamus/events{/privacy}', 'received_events_url': 'https://api.github.com/users/SuperSamus/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T20:59:55.848202 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'created', 'id': 14991, 'title': 'OGL: Warn about Intel Mesa GPU hangs on Linux', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6806913828', 'safe_author': False, 'body': 'heres the Issue for Mesa developers https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865', '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': 3, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-11T20:59:54Z', '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/6806913828', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6806913828', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6806913828, 'node_id': 'IC_kwDOALCn2M8AAAABlblDJA', '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}, 'created_at': '2026-11-11T20:59:54Z', 'updated_at': '2026-11-11T20:59:54Z', 'body': 'heres the Issue for Mesa developers https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6806913828/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-11T20:05:59Z', 'pushed_at': '2026-11-11T20:08:28Z', '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': 563817, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3385, 'open_issues': 489, 'watchers': 15801, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-11T20:08:00.224083 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 13814, 'title': 'DolphinQt: Put RenderWidget within another QWidget to fix OpenGL window focus detection.', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13814#issuecomment-6806097957', 'safe_author': True, 'body': 'Closing in favor of #15012 ', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13814', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13814/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13814/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13814/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13814', 'id': 3244947771, 'node_id': 'PR_kwDOALCn2M6fqnbb', 'number': 13814, 'title': 'DolphinQt: Put RenderWidget within another QWidget to fix OpenGL window focus detection.', '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}, 'labels': [{'id': 221808232, 'node_id': 'MDU6TGFiZWwyMjE4MDgyMzI=', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels/WIP%20/%20do%20not%20merge', 'name': 'WIP / do not merge', 'color': '0052cc', 'default': False, 'description': 'Work in progress (do not merge)', 'archived_at': None, 'archived_by': None}], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2025-07-19T05:37:29Z', 'updated_at': '2026-11-11T20:07:58Z', 'closed_at': '2026-11-11T20:07:57Z', 'assignee': None, 'author_association': 'MEMBER', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13814', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13814', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13814.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13814.patch', 'merged_at': None}, 'body': 'This fixes the OpenGL window focus issue for me: https://bugs.dolphin-emu.org/issues/13354\r\n\r\nFor reasons I was unable to figure out, when the `RenderWidget` is its own window with OpenGL + Wayland, Qt acts like it never has focus.\r\ne.g. `QApplication::activeWindow()` would return `nullptr`.\r\nI tried a bunch of other ways to detect focus, but I couldn\'t make it work.\r\n\r\nEmbedding `RenderWidget` within another `QWidget` makes focus detection work properly for me.\r\nIt also makes things a tiny bit cleaner since being able to just delete the `RenderWindow` eliminates some `disconnect` and `removeEventFilter` calls.\r\n\r\nCleaning up the includes in `MainWindow.cpp` exposed an invalid `class ControllerEmu` declaration so I\'ve also fixed that in this PR.\r\n\r\nThis also fixes: https://bugs.dolphin-emu.org/issues/11839\r\n\r\n"Render to Main Window" can now be toggled during emulation since fullscreen toggle now effectively requires that functionality.\r\n\r\nI still need to verify that I haven\'t broken some Windows-only features (exclusive fullscreen and cursor locking).\r\n\r\nTODO:\r\n - [x] Fix Fullscreen toggling.\r\n - [x] Fix out of date window title when render window is dynamically created.\r\n - [ ] Unbreak window focus on Windows.\r\n - [ ] Verify that exclusive fullscreen still works.\r\n - [ ] Verify that resolution changes still work.\r\n - [ ] Verify that cursor locking still works.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13814/reactions', 'total_count': 3, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 3, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13814/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6806097957', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13814#issuecomment-6806097957', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13814', 'id': 6806097957, 'node_id': 'IC_kwDOALCn2M8AAAABlazQJQ', '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-11T20:07:57Z', 'updated_at': '2026-11-11T20:07:57Z', 'body': 'Closing in favor of #15012 ', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6806097957/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-11T20:05:59Z', 'pushed_at': '2026-11-11T19:05:52Z', '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': 563817, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 490, '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': 3385, 'open_issues': 490, 'watchers': 15801, '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-11T19:34:20.296569 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14890, 'title': 'Android: Fix UI text truncation in 4K TV UI', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14890#issuecomment-6805402301', 'safe_author': True, 'body': "> Hi, I see this PR is merged but it seems like it is not included in the recent Play Store update version 2609b. Do we have an estimate on what version will this PR be included? @AdmiralCurtiss @JosJuice\r\n\r\n2609b was just a hotfix and wasn't intended to include new major features.\r\nYou can expect this change to be in the next full release, whenever we do one, generally every few months.\r\nAlternatively use a recent development build downloaded from our website.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14890', 'id': 5598406162, 'node_id': 'PR_kwDOALCn2M8AAAABFTH48Q', 'number': 14890, 'title': 'Android: Fix UI text truncation in 4K TV UI', 'user': {'login': 'lihanchen', 'id': 5497974, 'node_id': 'MDQ6VXNlcjU0OTc5NzQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5497974?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/lihanchen', 'html_url': 'https://github.com/lihanchen', 'followers_url': 'https://api.github.com/users/lihanchen/followers', 'following_url': 'https://api.github.com/users/lihanchen/following{/other_user}', 'gists_url': 'https://api.github.com/users/lihanchen/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/lihanchen/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/lihanchen/subscriptions', 'organizations_url': 'https://api.github.com/users/lihanchen/orgs', 'repos_url': 'https://api.github.com/users/lihanchen/repos', 'events_url': 'https://api.github.com/users/lihanchen/events{/privacy}', 'received_events_url': 'https://api.github.com/users/lihanchen/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2026-09-27T00:00:50Z', 'updated_at': '2026-11-11T19:34:18Z', 'closed_at': '2026-10-02T17:58:16Z', '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/14890', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14890', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14890.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14890.patch', 'merged_at': '2026-10-02T17:58:16Z'}, 'body': 'Before change:\r\n<img width="3840" height="2160" alt="Dolphin_Emulator_Shield2_main_homepage_adb_20260810_144621" src="https://github.com/user-attachments/assets/98e020e9-c908-4280-821a-f205c9d8bd06" />\r\n\r\nAfter Change:\r\n<img width="1680" height="959" alt="Screenshot 2026-09-26 at 4 54 38\u202fPM" src="https://github.com/user-attachments/assets/d231838f-bc6a-4e6a-a874-c2df8daa3750" />\r\n', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890/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/14890/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6805402301', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14890#issuecomment-6805402301', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14890', 'id': 6805402301, 'node_id': 'IC_kwDOALCn2M8AAAABlaIyvQ', '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-11T19:34:18Z', 'updated_at': '2026-11-11T19:34:18Z', 'body': "> Hi, I see this PR is merged but it seems like it is not included in the recent Play Store update version 2609b. Do we have an estimate on what version will this PR be included? @AdmiralCurtiss @JosJuice\r\n\r\n2609b was just a hotfix and wasn't intended to include new major features.\r\nYou can expect this change to be in the next full release, whenever we do one, generally every few months.\r\nAlternatively use a recent development build downloaded from our website.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6805402301/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-11T17:18:19Z', 'pushed_at': '2026-11-11T19:05:52Z', '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': 563816, 'stargazers_count': 15801, 'watchers_count': 15801, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3385, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 490, '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': 3385, 'open_issues': 490, 'watchers': 15801, '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'}
Recent 'gh_pull_request' events
2026-11-13T23:07:21.406820 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 15007, 'title': 'HW/WiimoteReal: Simplify the IsBalanceBoard check and hopefully make it more reliable.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15007', 'head_ref_name': 'is-balance-board-simple-test', 'safe_author': True, 'base_sha': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'head_sha': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T22:08:06.794445 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'closed', 'id': 15022, 'title': 'Fix typos in documentation', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15022', 'head_ref_name': 'fixtypos', 'safe_author': True, 'base_sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'head_sha': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'merged': True, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T21:47:20.849741 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'closed', 'id': 18, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'head_ref_name': 'dependabot/uv/tornado-6.6', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T21:47:14.925618 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'labeled', 'id': 20, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6.1', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/20', 'head_ref_name': 'dependabot/uv/tornado-6.6.1', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T21:47:14.582971 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'labeled', 'id': 20, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6.1', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/20', 'head_ref_name': 'dependabot/uv/tornado-6.6.1', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T21:47:12.526971 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'opened', 'id': 20, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6.1', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/20', 'head_ref_name': 'dependabot/uv/tornado-6.6.1', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T21:01:15.928896 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'hamidzr', 'action': 'opened', 'id': 15022, 'title': 'Fix typos in documentation', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15022', 'head_ref_name': 'fixtypos', 'safe_author': False, 'base_sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'head_sha': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T20:44:02.978068 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'closed', 'id': 15019, 'title': 'PerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15019', 'head_ref_name': 'perf-track-fps-fix', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'merged': True, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T20:14:41.732563 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'opened', 'id': 15021, 'title': 'VideoCommon/OGL: Detect modern Intel Mesa driver (iris/crocus)', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15021', 'head_ref_name': 'fix/ogl-mesa-iris-driver-detection', 'safe_author': False, 'base_sha': 'e66427c87eb75e70a893270a8078045796b83df4', 'head_sha': 'c0041900c3b578aa64db5a1dff2bac5894d8d377', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T20:05:33.949757 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'edited', 'id': 15013, 'title': 'OGL: Call InitDriverInfo() before checking DriverDetails in PopulateConfig()', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013', 'head_ref_name': 'fix/ogl-init-driver-info-order', 'safe_author': False, 'base_sha': 'e66427c87eb75e70a893270a8078045796b83df4', 'head_sha': 'f3d1a5ebf99e87ccf3c51855d82aa4cf56ea2f8a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T20:05:11.405895 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'synchronize', 'id': 15013, 'title': 'OGL: Call InitDriverInfo() before checking DriverDetails in PopulateConfig()', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013', 'head_ref_name': 'fix/ogl-init-driver-info-order', 'safe_author': False, 'base_sha': 'e66427c87eb75e70a893270a8078045796b83df4', 'head_sha': 'f3d1a5ebf99e87ccf3c51855d82aa4cf56ea2f8a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T19:55:32.450111 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'closed', 'id': 15014, 'title': 'OGL: Only show the Video Info OSD message when initializing the backend', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15014', 'head_ref_name': 'gl-osd-duplicate', 'safe_author': True, 'base_sha': 'db2afcbdf8f5175a6b8414d9f5e21c978775f651', 'head_sha': 'af2ccf4f72d6e3b001da54d7d0121370af87eda1', 'merged': True, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T19:38:19.344431 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 15019, 'title': 'PerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15019', 'head_ref_name': 'perf-track-fps-fix', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T19:37:04.177640 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 15003, 'title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003', 'head_ref_name': 'gba-asio', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': 'f40c96627dbae53f16f6d2030c823672c702cafb', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T19:35:28.852143 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 15017, 'title': 'DualShockUDPClient: Replace SFML with Asio.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15017', 'head_ref_name': 'dsu-asio', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': '6280847d3898f52145f0f1d5f7a17d0e3af573a8', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T19:16:30.081203 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 15003, 'title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003', 'head_ref_name': 'gba-asio', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': 'f40c96627dbae53f16f6d2030c823672c702cafb', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T14:50:45.008098 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'labeled', 'id': 19, 'title': 'build(deps): bump soupsieve from 2.9.2 to 4.0', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/19', 'head_ref_name': 'dependabot/uv/soupsieve-4.0', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '0c9c824937815a2ad9644ac42908c12f49947df5', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T14:50:44.795140 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'labeled', 'id': 19, 'title': 'build(deps): bump soupsieve from 2.9.2 to 4.0', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/19', 'head_ref_name': 'dependabot/uv/soupsieve-4.0', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '0c9c824937815a2ad9644ac42908c12f49947df5', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T14:50:42.354206 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'opened', 'id': 19, 'title': 'build(deps): bump soupsieve from 2.9.2 to 4.0', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/19', 'head_ref_name': 'dependabot/uv/soupsieve-4.0', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '0c9c824937815a2ad9644ac42908c12f49947df5', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T10:06:33.230235 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'opened', 'id': 15020, 'title': 'GameSettings: Fix widescreen detection in R: Racing Evolution.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15020', 'head_ref_name': 'gamesettings-r-racing-ar', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': '7ef155dbd9b1d3318ea8b8a101791bc6b5f94746', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T09:43:41.763365 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 15019, 'title': 'PerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15019', 'head_ref_name': 'perf-track-fps-fix', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T09:42:34.707111 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'opened', 'id': 15019, 'title': 'PerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15019', 'head_ref_name': 'perf-track-fps-fix', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T03:30:32.401166 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'nyanpasu64', 'action': 'synchronize', 'id': 12035, 'title': 'Add closed-loop latency control for Vulkan vsync', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/12035', 'head_ref_name': 'latency-control-wait', 'safe_author': False, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': 'fe5029758f0090eca24418250a0a364fe6f01889', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T02:14:32.304816 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 15003, 'title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003', 'head_ref_name': 'gba-asio', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-13T02:11:59.995086 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 15003, 'title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003', 'head_ref_name': 'gba-asio', 'safe_author': True, 'base_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'head_sha': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
Recent 'gh_pull_request_comment' events
2026-11-13T19:49:43.261992 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'created', 'id': 15013, 'hash': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4567895513', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-13T19:46:37.109565 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567212493', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-13T19:01:43.213109 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567417290', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T18:50:41.195935 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567302512', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T18:47:33.756529 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567272516', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T18:41:30.424534 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567212493', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T18:38:13.630905 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567181936', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-13T18:36:39.345941 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567167296', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-13T18:29:24.602577 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567098904', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-13T18:27:42.342081 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567080436', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-13T18:27:27.043874 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567080436', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-13T14:02:29.677000 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562116506', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T14:02:28.872153 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563980181', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T14:02:28.659259 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563769973', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T14:02:28.658622 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4564157885', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T14:02:28.657967 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563612344', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T14:02:28.657317 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563130812', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T14:02:28.656669 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563064833', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T14:02:28.656015 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15003, 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562000678', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-13T01:51:41.986697 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 15013, 'hash': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4558760790', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-13T01:10:42.357708 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'created', 'id': 15013, 'hash': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4558475234', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-12T19:36:08.672600 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14671, 'hash': '8343bfcd38ec1922bed739418c9bea806f233955', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4555361243', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-12T19:36:08.668181 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14671, 'hash': '8343bfcd38ec1922bed739418c9bea806f233955', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4555210543', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-12T19:36:08.665599 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14671, 'hash': '8343bfcd38ec1922bed739418c9bea806f233955', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4554891603', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-12T17:30:05.642851 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 15000, 'hash': '0934e81a9b42f80ddf299e41478f3b3c347f17c9', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15000#discussion_r4553900546', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
Recent 'gh_pull_request_review' events
2026-11-13T21:41:36.256364 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 15021, 'pr_title': 'VideoCommon/OGL: Detect modern Intel Mesa driver (iris/crocus)', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15021#pullrequestreview-5898441889', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-13T21:40:42.011399 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 15022, 'pr_title': 'Fix typos in documentation', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15022#pullrequestreview-5898431897', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-13T21:15:06.066154 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15022, 'pr_title': 'Fix typos in documentation', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15022#pullrequestreview-5898146915', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-13T20:10:56.021803 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15013, 'pr_title': 'OGL: Call InitDriverInfo() before checking DriverDetails in PopulateConfig()', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013#pullrequestreview-5897344475', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-13T19:57:45.081329 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'submitted', 'pr_id': 15020, 'pr_title': 'GameSettings: Fix widescreen detection in R: Racing Evolution.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15020#pullrequestreview-5897186813', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-13T19:56:31.814918 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 15019, 'pr_title': 'PerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15019#pullrequestreview-5897171061', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-13T19:55:51.504704 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'submitted', 'pr_id': 15008, 'pr_title': 'HW/WiimoteReal: Fix crash when UI disconnects a Balance Board.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15008#pullrequestreview-5897161779', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-13T19:49:43.261093 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'submitted', 'pr_id': 15013, 'pr_title': 'OGL: Call InitDriverInfo() before checking DriverDetails in PopulateConfig()', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013#pullrequestreview-5897090816', 'comments': [{'id': 4567895513, 'node_id': 'PRRC_kwDOALCn2M8AAAABEESN2Q', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567895513', 'pull_request_review_id': 5897090816, 'diff_hunk': '@@ -115,7 +115,7 @@ void InitDriverInfo()\n {\n driver = DriverDetails::DRIVER_NOUVEAU;\n }\n- else if (svendor == "Intel Open Source Technology Center")\n+ else if (svendor == "Intel Open Source Technology Center" || svendor == "Intel")\n {\n driver = DriverDetails::DRIVER_I965;', 'path': 'Source/Core/VideoBackends/OGL/OGLConfig.cpp', 'position': 7, 'original_position': 7, 'commit_id': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', '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}, 'body': 'sure man, i will do it', 'created_at': '2026-11-13T19:49:40Z', 'updated_at': '2026-11-13T19:49:40Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4567895513', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15013', 'author_association': 'NONE', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567895513'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4567895513'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15013'}}, 'original_commit_id': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567895513/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4544693694, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T19:01:43.211031 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5896501035', 'comments': [{'id': 4567417290, 'node_id': 'PRRC_kwDOALCn2M8AAAABED1Byg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567417290', 'pull_request_review_id': 5896501035, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 310, 'original_position': 310, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Changed my mind. While fixing the `Receive` `Disconnect`, I've made it use non-blocking sockets like before.", 'created_at': '2026-11-13T19:01:40Z', 'updated_at': '2026-11-13T19:01:41Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567417290', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567417290'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567417290'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567417290/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4563980181, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T18:50:41.194058 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5896360279', 'comments': [{'id': 4567302512, 'node_id': 'PRRC_kwDOALCn2M8AAAABEDuBcA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567302512', 'pull_request_review_id': 5896360279, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 123, 'original_position': 123, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': 'Mmmm, I suppose making `io_context` a member is a bit less fragile.', 'created_at': '2026-11-13T18:50:37Z', 'updated_at': '2026-11-13T18:50:38Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567302512', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567302512'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567302512'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567302512/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4563769973, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T18:47:33.754662 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5896322528', 'comments': [{'id': 4567272516, 'node_id': 'PRRC_kwDOALCn2M8AAAABEDsMRA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567272516', 'pull_request_review_id': 5896322528, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);\n }\n return IsConnected();\n }\n \n-bool GBASockServer::IsConnected()\n+bool GBASockServer::IsConnected() const\n {\n- return static_cast<bool>(m_client);\n+ return m_client.has_value();\n }\n \n void GBASockServer::Send(const u8* si_buffer)\n {\n+ using SerialInterface::EBufferCommands;\n+\n if (!Connect())\n return;\n \n- std::array<u8, SEND_MAX_SIZE> send_data;\n- for (size_t i = 0; i < send_data.size(); i++)\n- send_data[i] = si_buffer[i];\n+ const auto cmd = static_cast<EBufferCommands>(si_buffer[0]);\n+ const std::size_t byte_count = (cmd == EBufferCommands::CMD_WRITE_GBA) ? SEND_MAX_SIZE : 1uz;\n \n- const auto cmd = static_cast<EBufferCommands>(send_data[0]);\n-\n- sf::Socket::Status status;\n- if (cmd == EBufferCommands::CMD_WRITE_GBA)\n- status = m_client->send(send_data.data(), send_data.size());\n- else\n- status = m_client->send(send_data.data(), 1);\n-\n- if (status == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ asio::write(*m_client, asio::buffer(si_buffer, byte_count), ec);\n+ if (ec)\n Disconnect();\n }\n \n int GBASockServer::Receive(u8* si_buffer, u8 bytes)\n {\n- if (!m_client)\n+ if (!IsConnected())\n return 0;\n \n if (m_booted)\n {\n- sf::SocketSelector selector;\n- selector.add(*m_client);\n- (void)selector.wait(sf::milliseconds(1000));\n+ constexpr auto recv_timeout = std::chrono::milliseconds{1000};\n+ m_client->async_wait(tcp::socket::wait_read, asio::cancel_after(recv_timeout, asio::use_future))\n+ .wait();\n }\n \n size_t num_received = 0;\n- std::array<u8, RECV_MAX_SIZE> recv_data;\n- const sf::Socket::Status recv_stat = m_client->receive(recv_data.data(), bytes, num_received);\n- if (recv_stat == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ if (m_client->available(ec) != 0)\n+ num_received = m_client->read_some(asio::buffer(si_buffer, bytes), ec);\n+\n+ if (ec)', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 374, 'original_position': 374, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Seems so. Good call. `Send` was still producing handling a disconnect, but I'll fix this one.", 'created_at': '2026-11-13T18:47:30Z', 'updated_at': '2026-11-13T18:47:31Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567272516', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567272516'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567272516'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567272516/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4564157885, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T18:41:30.422571 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5896247836', 'comments': [{'id': 4567212493, 'node_id': 'PRRC_kwDOALCn2M8AAAABEDohzQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567212493', 'pull_request_review_id': 5896247836, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n- }\n- if (clock_server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba_clk);\n- s_waiting_clocks.push(std::move(new_client));\n+ if (std::error_code ec; data_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_DATA_PORT), ec) ||\n+ data_acceptor.listen(tcp::socket::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_DATA_PORT, ec.message());\n+ return;\n+ }\n+\n+ if (std::error_code ec; clock_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_CLOCK_PORT), ec) ||\n+ clock_acceptor.listen(asio::socket_base::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_CLOCK_PORT, ec.message());\n+ return;\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n+ const auto enqueue_accepted_sockets =\n+ [](tcp::acceptor& acceptor, Common::SPSCQueue<tcp::socket>& queue) -> asio::awaitable<void> {\n+ while (true)\n+ {\n+ auto [ec, socket] = co_await acceptor.async_accept(asio::as_tuple);\n+ if (ec)\n+ break;\n+ queue.Emplace(std::move(socket));\n }\n+ };\n \n- Common::SleepCurrentThread(1);\n- }\n-}\n+ asio::co_spawn(io, enqueue_accepted_sockets(data_acceptor, m_waiting_socks), asio::detached);\n+ asio::co_spawn(io, enqueue_accepted_sockets(clock_acceptor, m_waiting_clocks), asio::detached);\n \n-void GBAConnectionWaiter_Shutdown()\n-{\n- s_server_running.Clear();\n- if (s_connection_thread.joinable())\n- s_connection_thread.join();\n-}\n+ std::stop_callback cb{stoken, [&] { io.stop(); }};\n \n-template <typename T>\n-static std::unique_ptr<T> MoveFromFront(std::queue<std::unique_ptr<T>>& ptrs)\n-{\n- if (ptrs.empty())\n- return nullptr;\n- std::unique_ptr<T> ptr = std::move(ptrs.front());\n- ptrs.pop();\n- return ptr;\n-}\n+ // Keep the io_context running even if our acceptor tasks were to error out somehow.\n+ // Otherwise outside initiated async tasks would never finish.\n+ const auto work_guard = asio::make_work_guard(io);\n \n-static std::unique_ptr<sf::TcpSocket> GetNextSock()\n-{\n- std::lock_guard lk(s_cs_gba);\n- return MoveFromFront(s_waiting_socks);\n+ io.run();\n }\n \n-static std::unique_ptr<sf::TcpSocket> GetNextClock()\n+class GBASockServer final\n {\n- std::lock_guard lk(s_cs_gba_clk);\n- return MoveFromFront(s_waiting_clocks);\n-}\n+public:\n+ bool Connect();\n+ bool IsConnected() const;\n \n-GBASockServer::GBASockServer()\n-{\n- if (!s_connection_thread.joinable())\n- s_connection_thread = std::thread(GBAConnectionWaiter);\n+ void ClockSync(Core::System& system);\n+ void Send(const u8* si_buffer);\n+ int Receive(u8* si_buffer, u8 bytes);\n+ void Flush();\n \n- s_num_connected = 0;\n-}\n+private:\n+ void Disconnect();\n \n-GBASockServer::~GBASockServer()\n-{\n- Disconnect();\n-}\n+ std::optional<tcp::socket> m_client;\n+ std::optional<tcp::socket> m_clock_sync;\n+\n+ u64 m_last_time_slice = 0;\n+ bool m_booted = false;\n+\n+ std::shared_ptr<GBAConnectionHandler> m_connection_handler{GBAConnectionHandler::GetInstance()};', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 236, 'original_position': 236, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': 'Oh, I think if we had potential for outstanding async operations on those sockets then it *would* be necessary to stop the io_context + thread first, so.. I think either order is fine currently, but maybe the way I have it now is less fragile? :/', 'created_at': '2026-11-13T18:41:27Z', 'updated_at': '2026-11-13T18:41:28Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567212493', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567212493'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567212493'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567212493/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4563612344, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T18:38:13.509235 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5896208453', 'comments': [{'id': 4567181936, 'node_id': 'PRRC_kwDOALCn2M8AAAABEDmqcA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567181936', 'pull_request_review_id': 5896208453, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 310, 'original_position': 310, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Yes, I've changed it to use blocking sockets. It seemed slightly cleaner to me, but I can make it use non-blocking sockets if you or someone wants.", 'created_at': '2026-11-13T18:38:11Z', 'updated_at': '2026-11-13T18:38:11Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567181936', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567181936'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567181936'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567181936/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4563980181, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T18:36:39.937828 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5896190197', 'comments': [{'id': 4567167296, 'node_id': 'PRRC_kwDOALCn2M8AAAABEDlxQA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567167296', 'pull_request_review_id': 5896190197, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n- }\n- if (clock_server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba_clk);\n- s_waiting_clocks.push(std::move(new_client));\n+ if (std::error_code ec; data_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_DATA_PORT), ec) ||\n+ data_acceptor.listen(tcp::socket::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_DATA_PORT, ec.message());\n+ return;\n+ }\n+\n+ if (std::error_code ec; clock_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_CLOCK_PORT), ec) ||\n+ clock_acceptor.listen(asio::socket_base::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_CLOCK_PORT, ec.message());\n+ return;\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n+ const auto enqueue_accepted_sockets =\n+ [](tcp::acceptor& acceptor, Common::SPSCQueue<tcp::socket>& queue) -> asio::awaitable<void> {\n+ while (true)\n+ {\n+ auto [ec, socket] = co_await acceptor.async_accept(asio::as_tuple);\n+ if (ec)\n+ break;\n+ queue.Emplace(std::move(socket));\n }\n+ };\n \n- Common::SleepCurrentThread(1);\n- }\n-}\n+ asio::co_spawn(io, enqueue_accepted_sockets(data_acceptor, m_waiting_socks), asio::detached);\n+ asio::co_spawn(io, enqueue_accepted_sockets(clock_acceptor, m_waiting_clocks), asio::detached);\n \n-void GBAConnectionWaiter_Shutdown()\n-{\n- s_server_running.Clear();\n- if (s_connection_thread.joinable())\n- s_connection_thread.join();\n-}\n+ std::stop_callback cb{stoken, [&] { io.stop(); }};\n \n-template <typename T>\n-static std::unique_ptr<T> MoveFromFront(std::queue<std::unique_ptr<T>>& ptrs)\n-{\n- if (ptrs.empty())\n- return nullptr;\n- std::unique_ptr<T> ptr = std::move(ptrs.front());\n- ptrs.pop();\n- return ptr;\n-}\n+ // Keep the io_context running even if our acceptor tasks were to error out somehow.\n+ // Otherwise outside initiated async tasks would never finish.\n+ const auto work_guard = asio::make_work_guard(io);\n \n-static std::unique_ptr<sf::TcpSocket> GetNextSock()\n-{\n- std::lock_guard lk(s_cs_gba);\n- return MoveFromFront(s_waiting_socks);\n+ io.run();\n }\n \n-static std::unique_ptr<sf::TcpSocket> GetNextClock()\n+class GBASockServer final\n {\n- std::lock_guard lk(s_cs_gba_clk);\n- return MoveFromFront(s_waiting_clocks);\n-}\n+public:\n+ bool Connect();\n+ bool IsConnected() const;\n \n-GBASockServer::GBASockServer()\n-{\n- if (!s_connection_thread.joinable())\n- s_connection_thread = std::thread(GBAConnectionWaiter);\n+ void ClockSync(Core::System& system);\n+ void Send(const u8* si_buffer);\n+ int Receive(u8* si_buffer, u8 bytes);\n+ void Flush();\n \n- s_num_connected = 0;\n-}\n+private:\n+ void Disconnect();\n \n-GBASockServer::~GBASockServer()\n-{\n- Disconnect();\n-}\n+ std::optional<tcp::socket> m_client;\n+ std::optional<tcp::socket> m_clock_sync;\n+\n+ u64 m_last_time_slice = 0;\n+ bool m_booted = false;\n+\n+ std::shared_ptr<GBAConnectionHandler> m_connection_handler{GBAConnectionHandler::GetInstance()};', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 236, 'original_position': 236, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "My understand is that this *is* fine, since destruction of `m_connection_handler` means the io context is no longer running and only async operations require it exist, but I'll re-arrange the order to make it look less fragile.", 'created_at': '2026-11-13T18:36:37Z', 'updated_at': '2026-11-13T18:36:37Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567167296', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567167296'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567167296'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567167296/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4563612344, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T18:29:25.497503 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5896101637', 'comments': [{'id': 4567098904, 'node_id': 'PRRC_kwDOALCn2M8AAAABEDhmGA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567098904', 'pull_request_review_id': 5896101637, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n- }\n- if (clock_server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba_clk);\n- s_waiting_clocks.push(std::move(new_client));\n+ if (std::error_code ec; data_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_DATA_PORT), ec) ||\n+ data_acceptor.listen(tcp::socket::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_DATA_PORT, ec.message());\n+ return;\n+ }\n+\n+ if (std::error_code ec; clock_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_CLOCK_PORT), ec) ||\n+ clock_acceptor.listen(asio::socket_base::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_CLOCK_PORT, ec.message());\n+ return;\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n+ const auto enqueue_accepted_sockets =\n+ [](tcp::acceptor& acceptor, Common::SPSCQueue<tcp::socket>& queue) -> asio::awaitable<void> {\n+ while (true)\n+ {\n+ auto [ec, socket] = co_await acceptor.async_accept(asio::as_tuple);\n+ if (ec)\n+ break;', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 163, 'original_position': 163, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Oh, it looks like SFML just always does that.. Yeah I'll do that.", 'created_at': '2026-11-13T18:29:22Z', 'updated_at': '2026-11-13T18:29:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567098904', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567098904'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567098904'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567098904/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4563064833, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T18:27:27.042977 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5896078539', 'comments': [{'id': 4567080436, 'node_id': 'PRRC_kwDOALCn2M8AAAABEDgd9A', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567080436', 'pull_request_review_id': 5896078539, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 133, 'original_position': 133, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': 'My rationale here is, just opening a socket really *shouldn\'t* fail, and it if does, the following `bind` call will produces "bad fd" error and we have a check + LOG there.', 'created_at': '2026-11-13T18:27:24Z', 'updated_at': '2026-11-13T18:27:24Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567080436', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567080436'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4567080436'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4567080436/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4562116506, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T14:02:28.654073 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'submitted', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'changes_requested', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5889185321', 'comments': [{'id': 4562000678, 'node_id': 'PRRC_kwDOALCn2M8AAAABD-qbJg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562000678', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -0,0 +1,21 @@\n+add_library(asio INTERFACE)\n+\n+find_package(PkgConfig QUIET)\n+if(PkgConfig_FOUND)\n+ pkg_check_modules(ASIO QUIET IMPORTED_TARGET asio>=1.30.0)', 'path': 'Externals/asio/CMakeLists.txt', 'position': 5, 'original_position': 5, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': 'According to its [Revision History page](https://think-async.com/Asio/asio-1.38.2/doc/asio/history.html):\n - `asio::cancel_after` is used and was added on version 1.31.\n - `asio::co_spawn` support when exceptions are disabled was introduced on 1.32.', 'created_at': '2026-11-13T10:05:12Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562000678', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562000678'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562000678'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562000678/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': []}, {'id': 4562116506, 'node_id': 'PRRC_kwDOALCn2M8AAAABD-xfmg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562116506', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 133, 'original_position': 133, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Errors should be checked. I suppose this can fail if the socket can't be created.", 'created_at': '2026-11-13T10:18:24Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562116506', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562116506'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562116506'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562116506/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': []}, {'id': 4563064833, 'node_id': 'PRRC_kwDOALCn2M8AAAABD_rYAQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563064833', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n- }\n- if (clock_server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba_clk);\n- s_waiting_clocks.push(std::move(new_client));\n+ if (std::error_code ec; data_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_DATA_PORT), ec) ||\n+ data_acceptor.listen(tcp::socket::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_DATA_PORT, ec.message());\n+ return;\n+ }\n+\n+ if (std::error_code ec; clock_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_CLOCK_PORT), ec) ||\n+ clock_acceptor.listen(asio::socket_base::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_CLOCK_PORT, ec.message());\n+ return;\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n+ const auto enqueue_accepted_sockets =\n+ [](tcp::acceptor& acceptor, Common::SPSCQueue<tcp::socket>& queue) -> asio::awaitable<void> {\n+ while (true)\n+ {\n+ auto [ec, socket] = co_await acceptor.async_accept(asio::as_tuple);\n+ if (ec)\n+ break;', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 163, 'original_position': 163, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Shouldn't you set the TCP_NODELAY option, just like SFML socket?", 'created_at': '2026-11-13T12:08:10Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563064833', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563064833'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563064833'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563064833/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': []}, {'id': 4563130812, 'node_id': 'PRRC_kwDOALCn2M8AAAABD_vZvA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563130812', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);\n }\n return IsConnected();\n }\n \n-bool GBASockServer::IsConnected()\n+bool GBASockServer::IsConnected() const\n {\n- return static_cast<bool>(m_client);\n+ return m_client.has_value();\n }\n \n void GBASockServer::Send(const u8* si_buffer)\n {\n+ using SerialInterface::EBufferCommands;\n+\n if (!Connect())\n return;\n \n- std::array<u8, SEND_MAX_SIZE> send_data;\n- for (size_t i = 0; i < send_data.size(); i++)\n- send_data[i] = si_buffer[i];\n+ const auto cmd = static_cast<EBufferCommands>(si_buffer[0]);\n+ const std::size_t byte_count = (cmd == EBufferCommands::CMD_WRITE_GBA) ? SEND_MAX_SIZE : 1uz;\n \n- const auto cmd = static_cast<EBufferCommands>(send_data[0]);\n-\n- sf::Socket::Status status;\n- if (cmd == EBufferCommands::CMD_WRITE_GBA)\n- status = m_client->send(send_data.data(), send_data.size());\n- else\n- status = m_client->send(send_data.data(), 1);\n-\n- if (status == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ asio::write(*m_client, asio::buffer(si_buffer, byte_count), ec);\n+ if (ec)\n Disconnect();\n }\n \n int GBASockServer::Receive(u8* si_buffer, u8 bytes)\n {\n- if (!m_client)\n+ if (!IsConnected())\n return 0;\n \n if (m_booted)\n {\n- sf::SocketSelector selector;\n- selector.add(*m_client);\n- (void)selector.wait(sf::milliseconds(1000));\n+ constexpr auto recv_timeout = std::chrono::milliseconds{1000};\n+ m_client->async_wait(tcp::socket::wait_read, asio::cancel_after(recv_timeout, asio::use_future))\n+ .wait();\n }\n \n size_t num_received = 0;\n- std::array<u8, RECV_MAX_SIZE> recv_data;\n- const sf::Socket::Status recv_stat = m_client->receive(recv_data.data(), bytes, num_received);\n- if (recv_stat == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ if (m_client->available(ec) != 0)\n+ num_received = m_client->read_some(asio::buffer(si_buffer, bytes), ec);\n+\n+ if (ec)\n {\n Disconnect();\n return 0;\n }\n \n- if (recv_stat == sf::Socket::Status::NotReady || num_received == 0)\n+ if (num_received == 0)\n {\n m_booted = false;\n return 0;\n }\n m_booted = true;\n \n- for (size_t i = 0; i < recv_data.size(); i++)\n- si_buffer[i] = recv_data[i];\n- return static_cast<int>(std::min(num_received, recv_data.size()));\n+ return static_cast<int>(num_received);\n }\n \n void GBASockServer::Flush()\n {\n- if (!m_client)\n+ if (!IsConnected())\n return;\n \n- size_t num_received = 1;\n- u8 byte;\n- while (num_received)\n+ std::array<u8, RECV_MAX_SIZE> bytes{};\n+ while (m_client->available() != 0)', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 404, 'original_position': 404, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': '`error_code` should be passed to `available` to call the non-throwing version.', 'created_at': '2026-11-13T12:15:48Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563130812', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563130812'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563130812'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563130812/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': []}, {'id': 4563612344, 'node_id': 'PRRC_kwDOALCn2M8AAAABEAMyuA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563612344', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n- }\n- if (clock_server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba_clk);\n- s_waiting_clocks.push(std::move(new_client));\n+ if (std::error_code ec; data_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_DATA_PORT), ec) ||\n+ data_acceptor.listen(tcp::socket::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_DATA_PORT, ec.message());\n+ return;\n+ }\n+\n+ if (std::error_code ec; clock_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_CLOCK_PORT), ec) ||\n+ clock_acceptor.listen(asio::socket_base::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_CLOCK_PORT, ec.message());\n+ return;\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n+ const auto enqueue_accepted_sockets =\n+ [](tcp::acceptor& acceptor, Common::SPSCQueue<tcp::socket>& queue) -> asio::awaitable<void> {\n+ while (true)\n+ {\n+ auto [ec, socket] = co_await acceptor.async_accept(asio::as_tuple);\n+ if (ec)\n+ break;\n+ queue.Emplace(std::move(socket));\n }\n+ };\n \n- Common::SleepCurrentThread(1);\n- }\n-}\n+ asio::co_spawn(io, enqueue_accepted_sockets(data_acceptor, m_waiting_socks), asio::detached);\n+ asio::co_spawn(io, enqueue_accepted_sockets(clock_acceptor, m_waiting_clocks), asio::detached);\n \n-void GBAConnectionWaiter_Shutdown()\n-{\n- s_server_running.Clear();\n- if (s_connection_thread.joinable())\n- s_connection_thread.join();\n-}\n+ std::stop_callback cb{stoken, [&] { io.stop(); }};\n \n-template <typename T>\n-static std::unique_ptr<T> MoveFromFront(std::queue<std::unique_ptr<T>>& ptrs)\n-{\n- if (ptrs.empty())\n- return nullptr;\n- std::unique_ptr<T> ptr = std::move(ptrs.front());\n- ptrs.pop();\n- return ptr;\n-}\n+ // Keep the io_context running even if our acceptor tasks were to error out somehow.\n+ // Otherwise outside initiated async tasks would never finish.\n+ const auto work_guard = asio::make_work_guard(io);\n \n-static std::unique_ptr<sf::TcpSocket> GetNextSock()\n-{\n- std::lock_guard lk(s_cs_gba);\n- return MoveFromFront(s_waiting_socks);\n+ io.run();\n }\n \n-static std::unique_ptr<sf::TcpSocket> GetNextClock()\n+class GBASockServer final\n {\n- std::lock_guard lk(s_cs_gba_clk);\n- return MoveFromFront(s_waiting_clocks);\n-}\n+public:\n+ bool Connect();\n+ bool IsConnected() const;\n \n-GBASockServer::GBASockServer()\n-{\n- if (!s_connection_thread.joinable())\n- s_connection_thread = std::thread(GBAConnectionWaiter);\n+ void ClockSync(Core::System& system);\n+ void Send(const u8* si_buffer);\n+ int Receive(u8* si_buffer, u8 bytes);\n+ void Flush();\n \n- s_num_connected = 0;\n-}\n+private:\n+ void Disconnect();\n \n-GBASockServer::~GBASockServer()\n-{\n- Disconnect();\n-}\n+ std::optional<tcp::socket> m_client;\n+ std::optional<tcp::socket> m_clock_sync;\n+\n+ u64 m_last_time_slice = 0;\n+ bool m_booted = false;\n+\n+ std::shared_ptr<GBAConnectionHandler> m_connection_handler{GBAConnectionHandler::GetInstance()};', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 236, 'original_position': 236, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Can these sockets outlive the connection handler and its `io_context`? If so, wouldn't it be better to move `m_connection_handler` up, before these sockets so they don't reference a potentially destroyed resource?", 'created_at': '2026-11-13T13:05:49Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563612344', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563612344'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563612344'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563612344/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': []}, {'id': 4563769973, 'node_id': 'PRRC_kwDOALCn2M8AAAABEAWadQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563769973', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 123, 'original_position': 123, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Shouldn't `io_context` be a member declared before the sockets queues, so accepted sockets don't reference a potentially destroyed context?\n\nI suppose we can't move the `jthread` up because it might cause a destruction-order problem with the queues being used by the thread's coroutines.", 'created_at': '2026-11-13T13:21:06Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563769973', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563769973'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563769973'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563769973/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': []}, {'id': 4563980181, 'node_id': 'PRRC_kwDOALCn2M8AAAABEAjPlQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563980181', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 310, 'original_position': 310, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Unless I'm mistaken, the socket is now blocking unlike the SFML implementation.", 'created_at': '2026-11-13T13:40:18Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563980181', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563980181'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563980181'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563980181/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': []}, {'id': 4564157885, 'node_id': 'PRRC_kwDOALCn2M8AAAABEAuFvQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4564157885', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);\n }\n return IsConnected();\n }\n \n-bool GBASockServer::IsConnected()\n+bool GBASockServer::IsConnected() const\n {\n- return static_cast<bool>(m_client);\n+ return m_client.has_value();\n }\n \n void GBASockServer::Send(const u8* si_buffer)\n {\n+ using SerialInterface::EBufferCommands;\n+\n if (!Connect())\n return;\n \n- std::array<u8, SEND_MAX_SIZE> send_data;\n- for (size_t i = 0; i < send_data.size(); i++)\n- send_data[i] = si_buffer[i];\n+ const auto cmd = static_cast<EBufferCommands>(si_buffer[0]);\n+ const std::size_t byte_count = (cmd == EBufferCommands::CMD_WRITE_GBA) ? SEND_MAX_SIZE : 1uz;\n \n- const auto cmd = static_cast<EBufferCommands>(send_data[0]);\n-\n- sf::Socket::Status status;\n- if (cmd == EBufferCommands::CMD_WRITE_GBA)\n- status = m_client->send(send_data.data(), send_data.size());\n- else\n- status = m_client->send(send_data.data(), 1);\n-\n- if (status == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ asio::write(*m_client, asio::buffer(si_buffer, byte_count), ec);\n+ if (ec)\n Disconnect();\n }\n \n int GBASockServer::Receive(u8* si_buffer, u8 bytes)\n {\n- if (!m_client)\n+ if (!IsConnected())\n return 0;\n \n if (m_booted)\n {\n- sf::SocketSelector selector;\n- selector.add(*m_client);\n- (void)selector.wait(sf::milliseconds(1000));\n+ constexpr auto recv_timeout = std::chrono::milliseconds{1000};\n+ m_client->async_wait(tcp::socket::wait_read, asio::cancel_after(recv_timeout, asio::use_future))\n+ .wait();\n }\n \n size_t num_received = 0;\n- std::array<u8, RECV_MAX_SIZE> recv_data;\n- const sf::Socket::Status recv_stat = m_client->receive(recv_data.data(), bytes, num_received);\n- if (recv_stat == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ if (m_client->available(ec) != 0)\n+ num_received = m_client->read_some(asio::buffer(si_buffer, bytes), ec);\n+\n+ if (ec)', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 374, 'original_position': 374, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Won't this approach prevent a peer disconnected socket (i.e. `read` returning 0 bytes) from going through the `Disconnect()` method?", 'created_at': '2026-11-13T13:56:47Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4564157885', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4564157885'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4564157885'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4564157885/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-13T14:02:28.220651 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'edited', 'pr_id': 15003, 'pr_title': 'SI_DeviceGBA: Replace SFML network code with Asio.', 'state': 'changes_requested', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15003#pullrequestreview-5889185321', 'comments': [{'id': 4562000678, 'node_id': 'PRRC_kwDOALCn2M8AAAABD-qbJg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562000678', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -0,0 +1,21 @@\n+add_library(asio INTERFACE)\n+\n+find_package(PkgConfig QUIET)\n+if(PkgConfig_FOUND)\n+ pkg_check_modules(ASIO QUIET IMPORTED_TARGET asio>=1.30.0)', 'path': 'Externals/asio/CMakeLists.txt', 'position': 5, 'original_position': 5, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': 'According to its [Revision History page](https://think-async.com/Asio/asio-1.38.2/doc/asio/history.html):\n - `asio::cancel_after` is used and was added on version 1.31.\n - `asio::co_spawn` support when exceptions are disabled was introduced on 1.32.', 'created_at': '2026-11-13T10:05:12Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562000678', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562000678'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562000678'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562000678/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': []}, {'id': 4562116506, 'node_id': 'PRRC_kwDOALCn2M8AAAABD-xfmg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562116506', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 133, 'original_position': 133, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Errors should be checked. I suppose this can fail if the socket can't be created.", 'created_at': '2026-11-13T10:18:24Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562116506', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562116506'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4562116506'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4562116506/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': []}, {'id': 4563064833, 'node_id': 'PRRC_kwDOALCn2M8AAAABD_rYAQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563064833', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n- }\n- if (clock_server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba_clk);\n- s_waiting_clocks.push(std::move(new_client));\n+ if (std::error_code ec; data_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_DATA_PORT), ec) ||\n+ data_acceptor.listen(tcp::socket::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_DATA_PORT, ec.message());\n+ return;\n+ }\n+\n+ if (std::error_code ec; clock_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_CLOCK_PORT), ec) ||\n+ clock_acceptor.listen(asio::socket_base::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_CLOCK_PORT, ec.message());\n+ return;\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n+ const auto enqueue_accepted_sockets =\n+ [](tcp::acceptor& acceptor, Common::SPSCQueue<tcp::socket>& queue) -> asio::awaitable<void> {\n+ while (true)\n+ {\n+ auto [ec, socket] = co_await acceptor.async_accept(asio::as_tuple);\n+ if (ec)\n+ break;', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 163, 'original_position': 163, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Shouldn't you set the TCP_NODELAY option, just like SFML socket?", 'created_at': '2026-11-13T12:08:10Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563064833', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563064833'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563064833'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563064833/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': []}, {'id': 4563130812, 'node_id': 'PRRC_kwDOALCn2M8AAAABD_vZvA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563130812', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);\n }\n return IsConnected();\n }\n \n-bool GBASockServer::IsConnected()\n+bool GBASockServer::IsConnected() const\n {\n- return static_cast<bool>(m_client);\n+ return m_client.has_value();\n }\n \n void GBASockServer::Send(const u8* si_buffer)\n {\n+ using SerialInterface::EBufferCommands;\n+\n if (!Connect())\n return;\n \n- std::array<u8, SEND_MAX_SIZE> send_data;\n- for (size_t i = 0; i < send_data.size(); i++)\n- send_data[i] = si_buffer[i];\n+ const auto cmd = static_cast<EBufferCommands>(si_buffer[0]);\n+ const std::size_t byte_count = (cmd == EBufferCommands::CMD_WRITE_GBA) ? SEND_MAX_SIZE : 1uz;\n \n- const auto cmd = static_cast<EBufferCommands>(send_data[0]);\n-\n- sf::Socket::Status status;\n- if (cmd == EBufferCommands::CMD_WRITE_GBA)\n- status = m_client->send(send_data.data(), send_data.size());\n- else\n- status = m_client->send(send_data.data(), 1);\n-\n- if (status == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ asio::write(*m_client, asio::buffer(si_buffer, byte_count), ec);\n+ if (ec)\n Disconnect();\n }\n \n int GBASockServer::Receive(u8* si_buffer, u8 bytes)\n {\n- if (!m_client)\n+ if (!IsConnected())\n return 0;\n \n if (m_booted)\n {\n- sf::SocketSelector selector;\n- selector.add(*m_client);\n- (void)selector.wait(sf::milliseconds(1000));\n+ constexpr auto recv_timeout = std::chrono::milliseconds{1000};\n+ m_client->async_wait(tcp::socket::wait_read, asio::cancel_after(recv_timeout, asio::use_future))\n+ .wait();\n }\n \n size_t num_received = 0;\n- std::array<u8, RECV_MAX_SIZE> recv_data;\n- const sf::Socket::Status recv_stat = m_client->receive(recv_data.data(), bytes, num_received);\n- if (recv_stat == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ if (m_client->available(ec) != 0)\n+ num_received = m_client->read_some(asio::buffer(si_buffer, bytes), ec);\n+\n+ if (ec)\n {\n Disconnect();\n return 0;\n }\n \n- if (recv_stat == sf::Socket::Status::NotReady || num_received == 0)\n+ if (num_received == 0)\n {\n m_booted = false;\n return 0;\n }\n m_booted = true;\n \n- for (size_t i = 0; i < recv_data.size(); i++)\n- si_buffer[i] = recv_data[i];\n- return static_cast<int>(std::min(num_received, recv_data.size()));\n+ return static_cast<int>(num_received);\n }\n \n void GBASockServer::Flush()\n {\n- if (!m_client)\n+ if (!IsConnected())\n return;\n \n- size_t num_received = 1;\n- u8 byte;\n- while (num_received)\n+ std::array<u8, RECV_MAX_SIZE> bytes{};\n+ while (m_client->available() != 0)', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 404, 'original_position': 404, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': '`error_code` should be passed to `available` to call the non-throwing version.', 'created_at': '2026-11-13T12:15:48Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563130812', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563130812'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563130812'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563130812/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': []}, {'id': 4563612344, 'node_id': 'PRRC_kwDOALCn2M8AAAABEAMyuA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563612344', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+\n+ tcp::acceptor data_acceptor{io};\n+ tcp::acceptor clock_acceptor{io};\n {\n- if (server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba);\n- s_waiting_socks.push(std::move(new_client));\n+ std::error_code ec;\n+ (void)data_acceptor.open(tcp::v4(), ec);\n+ (void)clock_acceptor.open(tcp::v4(), ec);\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n- }\n- if (clock_server.accept(*new_client) == sf::Socket::Status::Done)\n- {\n- std::lock_guard lk(s_cs_gba_clk);\n- s_waiting_clocks.push(std::move(new_client));\n+ if (std::error_code ec; data_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_DATA_PORT), ec) ||\n+ data_acceptor.listen(tcp::socket::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_DATA_PORT, ec.message());\n+ return;\n+ }\n+\n+ if (std::error_code ec; clock_acceptor.bind(tcp::endpoint(tcp::v4(), GBA_CLOCK_PORT), ec) ||\n+ clock_acceptor.listen(asio::socket_base::max_listen_connections, ec))\n+ {\n+ ERROR_LOG_FMT(SERIALINTERFACE, "Unable to bind TCP port {}: {}", GBA_CLOCK_PORT, ec.message());\n+ return;\n+ }\n \n- new_client = std::make_unique<sf::TcpSocket>();\n+ const auto enqueue_accepted_sockets =\n+ [](tcp::acceptor& acceptor, Common::SPSCQueue<tcp::socket>& queue) -> asio::awaitable<void> {\n+ while (true)\n+ {\n+ auto [ec, socket] = co_await acceptor.async_accept(asio::as_tuple);\n+ if (ec)\n+ break;\n+ queue.Emplace(std::move(socket));\n }\n+ };\n \n- Common::SleepCurrentThread(1);\n- }\n-}\n+ asio::co_spawn(io, enqueue_accepted_sockets(data_acceptor, m_waiting_socks), asio::detached);\n+ asio::co_spawn(io, enqueue_accepted_sockets(clock_acceptor, m_waiting_clocks), asio::detached);\n \n-void GBAConnectionWaiter_Shutdown()\n-{\n- s_server_running.Clear();\n- if (s_connection_thread.joinable())\n- s_connection_thread.join();\n-}\n+ std::stop_callback cb{stoken, [&] { io.stop(); }};\n \n-template <typename T>\n-static std::unique_ptr<T> MoveFromFront(std::queue<std::unique_ptr<T>>& ptrs)\n-{\n- if (ptrs.empty())\n- return nullptr;\n- std::unique_ptr<T> ptr = std::move(ptrs.front());\n- ptrs.pop();\n- return ptr;\n-}\n+ // Keep the io_context running even if our acceptor tasks were to error out somehow.\n+ // Otherwise outside initiated async tasks would never finish.\n+ const auto work_guard = asio::make_work_guard(io);\n \n-static std::unique_ptr<sf::TcpSocket> GetNextSock()\n-{\n- std::lock_guard lk(s_cs_gba);\n- return MoveFromFront(s_waiting_socks);\n+ io.run();\n }\n \n-static std::unique_ptr<sf::TcpSocket> GetNextClock()\n+class GBASockServer final\n {\n- std::lock_guard lk(s_cs_gba_clk);\n- return MoveFromFront(s_waiting_clocks);\n-}\n+public:\n+ bool Connect();\n+ bool IsConnected() const;\n \n-GBASockServer::GBASockServer()\n-{\n- if (!s_connection_thread.joinable())\n- s_connection_thread = std::thread(GBAConnectionWaiter);\n+ void ClockSync(Core::System& system);\n+ void Send(const u8* si_buffer);\n+ int Receive(u8* si_buffer, u8 bytes);\n+ void Flush();\n \n- s_num_connected = 0;\n-}\n+private:\n+ void Disconnect();\n \n-GBASockServer::~GBASockServer()\n-{\n- Disconnect();\n-}\n+ std::optional<tcp::socket> m_client;\n+ std::optional<tcp::socket> m_clock_sync;\n+\n+ u64 m_last_time_slice = 0;\n+ bool m_booted = false;\n+\n+ std::shared_ptr<GBAConnectionHandler> m_connection_handler{GBAConnectionHandler::GetInstance()};', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 236, 'original_position': 236, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Can these sockets outlive the connection handler and its `io_context`? If so, wouldn't it be better to move `m_connection_handler` up, before these sockets so they don't reference a potentially destroyed resource?", 'created_at': '2026-11-13T13:05:49Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563612344', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563612344'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563612344'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563612344/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': []}, {'id': 4563769973, 'node_id': 'PRRC_kwDOALCn2M8AAAABEAWadQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563769973', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -3,153 +3,186 @@\n \n #include "Core/HW/SI/SI_DeviceGBA.h"\n \n-#include <cstddef>\n-#include <cstring>\n #include <memory>\n-#include <mutex>\n-#include <queue>\n+#include <stop_token>\n #include <thread>\n \n+#include <asio.hpp>\n+\n+#include "Common/AsioUtil.h" // IWYU pragma: keep\n+#include "Common/BitUtils.h"\n #include "Common/CommonTypes.h"\n-#include "Common/Flag.h"\n #include "Common/Logging/Log.h"\n+#include "Common/SPSCQueue.h"\n+#include "Common/Swap.h"\n #include "Common/Thread.h"\n #include "Core/CoreTiming.h"\n #include "Core/HW/SI/SI_Device.h"\n #include "Core/HW/SystemTimers.h"\n #include "Core/System.h"\n \n-namespace SerialInterface\n-{\n namespace\n {\n-std::thread s_connection_thread;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_socks;\n-std::queue<std::unique_ptr<sf::TcpSocket>> s_waiting_clocks;\n-std::mutex s_cs_gba;\n-std::mutex s_cs_gba_clk;\n-int s_num_connected;\n-Common::Flag s_server_running;\n-} // namespace\n \n-constexpr auto SEND_MAX_SIZE = 5, RECV_MAX_SIZE = 5;\n+constexpr u16 GBA_DATA_PORT = 0xd6ba; // "dolphin gba"\n+constexpr u16 GBA_CLOCK_PORT = 0xc10c; // "clock"\n+\n+constexpr auto SEND_MAX_SIZE = 5uz;\n+constexpr auto RECV_MAX_SIZE = 5uz;\n \n-// --- GameBoy Advance "Link Cable" ---\n+using asio::ip::tcp;\n \n-static void GBAConnectionWaiter()\n+// Accepts incoming connections and runs IO context thread.\n+class GBAConnectionHandler final\n {\n- s_server_running.Set();\n+public:\n+ // All 4 GBAs share one "Connection Handler".\n+ static std::shared_ptr<GBAConnectionHandler> GetInstance()\n+ {\n+ auto result = s_instance.lock();\n+ if (!result)\n+ {\n+ result = std::shared_ptr<GBAConnectionHandler>(new GBAConnectionHandler);\n+ s_instance = result;\n+ }\n+ return result;\n+ }\n \n- Common::SetCurrentThreadName("GBA Connection Waiter");\n+ std::optional<tcp::socket> GetNextSock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_socks.Empty())\n+ {\n+ result = std::move(m_waiting_socks.Front());\n+ m_waiting_socks.Pop();\n+ }\n+ return result;\n+ }\n \n- sf::TcpListener server;\n- sf::TcpListener clock_server;\n+ std::optional<tcp::socket> GetNextClock()\n+ {\n+ std::optional<tcp::socket> result;\n+ if (!m_waiting_clocks.Empty())\n+ {\n+ result = std::move(m_waiting_clocks.Front());\n+ m_waiting_clocks.Pop();\n+ }\n+ return result;\n+ }\n \n- // "dolphin gba"\n- if (server.listen(0xd6ba) != sf::Socket::Status::Done)\n- return;\n+private:\n+ GBAConnectionHandler() = default;\n \n- // "clock"\n- if (clock_server.listen(0xc10c) != sf::Socket::Status::Done)\n- return;\n+ static std::weak_ptr<GBAConnectionHandler> s_instance;\n+\n+ void ThreadFunc(std::stop_token stoken);\n+\n+ Common::SPSCQueue<tcp::socket> m_waiting_socks;\n+ Common::SPSCQueue<tcp::socket> m_waiting_clocks;\n \n- server.setBlocking(false);\n- clock_server.setBlocking(false);\n+ std::jthread m_connection_thread{std::bind_front(&GBAConnectionHandler::ThreadFunc, this)};\n+};\n \n- auto new_client = std::make_unique<sf::TcpSocket>();\n- while (s_server_running.IsSet())\n+std::weak_ptr<GBAConnectionHandler> GBAConnectionHandler::s_instance;\n+\n+void GBAConnectionHandler::ThreadFunc(std::stop_token stoken)\n+{\n+ Common::SetCurrentThreadName("GBA IO Context");\n+\n+ asio::io_context io;\n+', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 123, 'original_position': 123, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Shouldn't `io_context` be a member declared before the sockets queues, so accepted sockets don't reference a potentially destroyed context?\n\nI suppose we can't move the `jthread` up because it might cause a destruction-order problem with the queues being used by the thread's coroutines.", 'created_at': '2026-11-13T13:21:06Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563769973', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563769973'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563769973'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563769973/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': []}, {'id': 4563980181, 'node_id': 'PRRC_kwDOALCn2M8AAAABEAjPlQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563980181', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 310, 'original_position': 310, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Unless I'm mistaken, the socket is now blocking unlike the SFML implementation.", 'created_at': '2026-11-13T13:40:18Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563980181', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563980181'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4563980181'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4563980181/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': []}, {'id': 4564157885, 'node_id': 'PRRC_kwDOALCn2M8AAAABEAuFvQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4564157885', 'pull_request_review_id': 5889185321, 'diff_hunk': '@@ -160,105 +193,126 @@ void GBASockServer::ClockSync(Core::System& system)\n \n time_slice = (u32)((u64)time_slice * 16777216 / system.GetSystemTimers().GetTicksPerSecond());\n m_last_time_slice = core_timing.GetTicks();\n- char bytes[4] = {0, 0, 0, 0};\n- bytes[0] = (time_slice >> 24) & 0xff;\n- bytes[1] = (time_slice >> 16) & 0xff;\n- bytes[2] = (time_slice >> 8) & 0xff;\n- bytes[3] = time_slice & 0xff;\n-\n- const sf::Socket::Status status = m_clock_sync->send(bytes, 4);\n- if (status == sf::Socket::Status::Disconnected)\n- {\n- m_clock_sync->disconnect();\n- m_clock_sync = nullptr;\n- }\n+\n+ std::error_code ec;\n+ asio::write(*m_clock_sync, Common::AsU8Span(Common::BigEndianValue{time_slice}), ec);\n+ if (ec)\n+ m_clock_sync.reset();\n }\n \n bool GBASockServer::Connect()\n {\n if (!IsConnected())\n {\n- m_client = GetNextSock();\n- if (m_client)\n- m_client->setBlocking(false);\n+ if (auto new_client = m_connection_handler->GetNextSock())\n+ m_client = std::move(*new_client);\n }\n return IsConnected();\n }\n \n-bool GBASockServer::IsConnected()\n+bool GBASockServer::IsConnected() const\n {\n- return static_cast<bool>(m_client);\n+ return m_client.has_value();\n }\n \n void GBASockServer::Send(const u8* si_buffer)\n {\n+ using SerialInterface::EBufferCommands;\n+\n if (!Connect())\n return;\n \n- std::array<u8, SEND_MAX_SIZE> send_data;\n- for (size_t i = 0; i < send_data.size(); i++)\n- send_data[i] = si_buffer[i];\n+ const auto cmd = static_cast<EBufferCommands>(si_buffer[0]);\n+ const std::size_t byte_count = (cmd == EBufferCommands::CMD_WRITE_GBA) ? SEND_MAX_SIZE : 1uz;\n \n- const auto cmd = static_cast<EBufferCommands>(send_data[0]);\n-\n- sf::Socket::Status status;\n- if (cmd == EBufferCommands::CMD_WRITE_GBA)\n- status = m_client->send(send_data.data(), send_data.size());\n- else\n- status = m_client->send(send_data.data(), 1);\n-\n- if (status == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ asio::write(*m_client, asio::buffer(si_buffer, byte_count), ec);\n+ if (ec)\n Disconnect();\n }\n \n int GBASockServer::Receive(u8* si_buffer, u8 bytes)\n {\n- if (!m_client)\n+ if (!IsConnected())\n return 0;\n \n if (m_booted)\n {\n- sf::SocketSelector selector;\n- selector.add(*m_client);\n- (void)selector.wait(sf::milliseconds(1000));\n+ constexpr auto recv_timeout = std::chrono::milliseconds{1000};\n+ m_client->async_wait(tcp::socket::wait_read, asio::cancel_after(recv_timeout, asio::use_future))\n+ .wait();\n }\n \n size_t num_received = 0;\n- std::array<u8, RECV_MAX_SIZE> recv_data;\n- const sf::Socket::Status recv_stat = m_client->receive(recv_data.data(), bytes, num_received);\n- if (recv_stat == sf::Socket::Status::Disconnected)\n+ std::error_code ec;\n+ if (m_client->available(ec) != 0)\n+ num_received = m_client->read_some(asio::buffer(si_buffer, bytes), ec);\n+\n+ if (ec)', 'path': 'Source/Core/Core/HW/SI/SI_DeviceGBA.cpp', 'position': 374, 'original_position': 374, 'commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', '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': "Won't this approach prevent a peer disconnected socket (i.e. `read` returning 0 bytes) from going through the `Disconnect()` method?", 'created_at': '2026-11-13T13:56:47Z', 'updated_at': '2026-11-13T14:02:25Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4564157885', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4564157885'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15003#discussion_r4564157885'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15003'}}, 'original_commit_id': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4564157885/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-13T02:59:56.603342 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 15014, 'pr_title': 'OGL: Only show the Video Info OSD message when initializing the backend', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15014#pullrequestreview-5885377972', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-13T01:51:41.966135 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 15013, 'pr_title': 'OGL: Call InitDriverInfo() before checking DriverDetails in PopulateConfig()', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013#pullrequestreview-5884896398', 'comments': [{'id': 4558760790, 'node_id': 'PRRC_kwDOALCn2M8AAAABD7krVg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4558760790', 'pull_request_review_id': 5884896398, 'diff_hunk': '@@ -115,7 +115,7 @@ void InitDriverInfo()\n {\n driver = DriverDetails::DRIVER_NOUVEAU;\n }\n- else if (svendor == "Intel Open Source Technology Center")\n+ else if (svendor == "Intel Open Source Technology Center" || svendor == "Intel")\n {\n driver = DriverDetails::DRIVER_I965;', 'path': 'Source/Core/VideoBackends/OGL/OGLConfig.cpp', 'position': 7, 'original_position': 7, 'commit_id': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', '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 don't know, but I think it would make sense to put this Intel string checking change in a separate PR for its own discussion.", 'created_at': '2026-11-13T01:51:39Z', 'updated_at': '2026-11-13T01:51:39Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4558760790', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15013', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4558760790'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4558760790'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15013'}}, 'original_commit_id': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4558760790/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4544693694, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-13T01:10:42.318798 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jpferraz-git', 'action': 'submitted', 'pr_id': 15013, 'pr_title': 'OGL: Call InitDriverInfo() before checking DriverDetails in PopulateConfig()', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15013#pullrequestreview-5884572795', 'comments': [{'id': 4558475234, 'node_id': 'PRRC_kwDOALCn2M8AAAABD7TP4g', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4558475234', 'pull_request_review_id': 5884572795, 'diff_hunk': '@@ -115,7 +115,7 @@ void InitDriverInfo()\n {\n driver = DriverDetails::DRIVER_NOUVEAU;\n }\n- else if (svendor == "Intel Open Source Technology Center")\n+ else if (svendor == "Intel Open Source Technology Center" || svendor == "Intel")\n {\n driver = DriverDetails::DRIVER_I965;', 'path': 'Source/Core/VideoBackends/OGL/OGLConfig.cpp', 'position': 7, 'original_position': 7, 'commit_id': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', '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}, 'body': 'hmm yep, thats make sense, should i add a separate enum for svendor == "Intel"? \r\n ', 'created_at': '2026-11-13T01:10:39Z', 'updated_at': '2026-11-13T01:10:40Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4558475234', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15013', 'author_association': 'NONE', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4558475234'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15013#discussion_r4558475234'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15013'}}, 'original_commit_id': 'fd4c8faf60aaf45539168dc5aca671497f40cb29', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4558475234/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4544693694, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-12T19:36:08.662170 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'submitted', 'pr_id': 14671, 'pr_title': 'Android: Add RetroAchievements host override receiver', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14671#pullrequestreview-5880223316', 'comments': [{'id': 4554891603, 'node_id': 'PRRC_kwDOALCn2M8AAAABD34hUw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4554891603', 'pull_request_review_id': 5880223316, 'diff_hunk': '@@ -0,0 +1,110 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+package org.dolphinemu.dolphinemu.features.retroachievements\n+\n+import android.content.ContentProvider\n+import android.content.ContentValues\n+import android.database.Cursor\n+import android.net.Uri\n+import android.os.Bundle\n+import java.net.URI\n+import java.util.Locale\n+import org.dolphinemu.dolphinemu.features.settings.model.AchievementModel\n+\n+/**\n+ * Lets a companion app point the RetroAchievements client at a local proxy.\n+ *\n+ * The provider has to be exported without a permission to be reachable at all, so access is\n+ * decided here, against the calling package that Binder reports and the caller cannot set. A\n+ * caller is only served after the user allowed it in [RetroAchievementsHostOverrideAccessActivity].\n+ */\n+class RetroAchievementsHostOverrideProvider : ContentProvider() {\n+ override fun onCreate(): Boolean = true\n+\n+ override fun call(method: String, arg: String?, extras: Bundle?): Bundle {\n+ val context = context ?: return status(STATUS_UNAVAILABLE)\n+ val caller = callingPackage ?: return status(STATUS_DENIED)\n+ if (method != METHOD_SET_HOST_OVERRIDE && method != METHOD_CLEAR_HOST_OVERRIDE) {\n+ return status(STATUS_UNKNOWN_METHOD)\n+ }\n+ if (!RetroAchievementsHostOverrideAccess.awaitDirectoriesReady(context)) {\n+ return status(STATUS_UNAVAILABLE)\n+ }\n+ if (!RetroAchievementsHostOverrideAccess.isGranted(context, caller)) {\n+ return status(STATUS_DENIED)\n+ }\n+\n+ if (method == METHOD_SET_HOST_OVERRIDE) {\n+ val hostUrl = normalizeHostUrl(arg) ?: return status(STATUS_INVALID_HOST)\n+ RetroAchievementsHostOverrideAccess.runOnMainThread(context) {\n+ AchievementModel.setHostOverride(hostUrl)\n+ }\n+ } else {\n+ RetroAchievementsHostOverrideAccess.runOnMainThread(context) {\n+ AchievementModel.clearHostOverride()\n+ }', 'path': 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/retroachievements/RetroAchievementsHostOverrideProvider.kt', 'position': 45, 'original_position': 45, 'commit_id': '8343bfcd38ec1922bed739418c9bea806f233955', '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': "Isn't there a TOCTOU (time-of-check to time-of-use) issue here?\n\nFor instance, a granted app passes the initial checks, is then concurrently revoked by the user, but will go through via `setHostOverride` scheduled on the other thread.", 'created_at': '2026-11-12T18:52:07Z', 'updated_at': '2026-11-12T19:36:05Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4554891603', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14671', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4554891603'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4554891603'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14671'}}, 'original_commit_id': '8343bfcd38ec1922bed739418c9bea806f233955', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4554891603/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': []}, {'id': 4555176461, 'node_id': 'PRRC_kwDOALCn2M8AAAABD4J6DQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555176461', 'pull_request_review_id': 5880223316, 'diff_hunk': '@@ -0,0 +1,110 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+package org.dolphinemu.dolphinemu.features.retroachievements\n+\n+import android.content.ContentProvider\n+import android.content.ContentValues\n+import android.database.Cursor\n+import android.net.Uri\n+import android.os.Bundle\n+import java.net.URI\n+import java.util.Locale\n+import org.dolphinemu.dolphinemu.features.settings.model.AchievementModel\n+\n+/**\n+ * Lets a companion app point the RetroAchievements client at a local proxy.\n+ *\n+ * The provider has to be exported without a permission to be reachable at all, so access is\n+ * decided here, against the calling package that Binder reports and the caller cannot set. A\n+ * caller is only served after the user allowed it in [RetroAchievementsHostOverrideAccessActivity].\n+ */\n+class RetroAchievementsHostOverrideProvider : ContentProvider() {\n+ override fun onCreate(): Boolean = true\n+\n+ override fun call(method: String, arg: String?, extras: Bundle?): Bundle {\n+ val context = context ?: return status(STATUS_UNAVAILABLE)\n+ val caller = callingPackage ?: return status(STATUS_DENIED)\n+ if (method != METHOD_SET_HOST_OVERRIDE && method != METHOD_CLEAR_HOST_OVERRIDE) {\n+ return status(STATUS_UNKNOWN_METHOD)\n+ }\n+ if (!RetroAchievementsHostOverrideAccess.awaitDirectoriesReady(context)) {\n+ return status(STATUS_UNAVAILABLE)\n+ }\n+ if (!RetroAchievementsHostOverrideAccess.isGranted(context, caller)) {\n+ return status(STATUS_DENIED)\n+ }\n+\n+ if (method == METHOD_SET_HOST_OVERRIDE) {\n+ val hostUrl = normalizeHostUrl(arg) ?: return status(STATUS_INVALID_HOST)\n+ RetroAchievementsHostOverrideAccess.runOnMainThread(context) {\n+ AchievementModel.setHostOverride(hostUrl)\n+ }\n+ } else {\n+ RetroAchievementsHostOverrideAccess.runOnMainThread(context) {\n+ AchievementModel.clearHostOverride()\n+ }', 'path': 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/retroachievements/RetroAchievementsHostOverrideProvider.kt', 'position': 45, 'original_position': 45, 'commit_id': '8343bfcd38ec1922bed739418c9bea806f233955', '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': "Won't this allow changing the setting while a game is running? Won't bad things happen if such case occurs?", 'created_at': '2026-11-12T19:16:49Z', 'updated_at': '2026-11-12T19:36:05Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4555176461', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14671', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555176461'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4555176461'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14671'}}, 'original_commit_id': '8343bfcd38ec1922bed739418c9bea806f233955', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555176461/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': []}, {'id': 4555210543, 'node_id': 'PRRC_kwDOALCn2M8AAAABD4L_Lw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555210543', 'pull_request_review_id': 5880223316, 'diff_hunk': '@@ -78,15 +78,15 @@ void AchievementManager::Init(void* hwnd)\n std::lock_guard lg{m_lock};\n m_client = rc_client_create(MemoryPeeker, Request);\n }\n- std::string host_url = Config::Get(Config::RA_HOST_URL);\n- if (!host_url.empty())\n- rc_client_set_host(m_client, host_url.c_str());\n+ m_host_url = Config::Get(Config::RA_HOST_URL);\n+ rc_client_set_host(m_client, m_host_url.c_str());', 'path': 'Source/Core/Core/AchievementManager.cpp', 'position': 8, 'original_position': 8, 'commit_id': '8343bfcd38ec1922bed739418c9bea806f233955', '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': 'Wouldn\'t it be better to "pull" the settings from the proxy every times rather than saving it? Assuming the proxy is local, it\'d be cheap and will make sure it is reachable.', 'created_at': '2026-11-12T19:19:52Z', 'updated_at': '2026-11-12T19:36:05Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4555210543', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14671', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555210543'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4555210543'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14671'}}, 'original_commit_id': '8343bfcd38ec1922bed739418c9bea806f233955', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555210543/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': []}, {'id': 4555361243, 'node_id': 'PRRC_kwDOALCn2M8AAAABD4VL2w', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555361243', 'pull_request_review_id': 5880223316, 'diff_hunk': '@@ -0,0 +1,110 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+package org.dolphinemu.dolphinemu.features.retroachievements\n+\n+import android.content.ContentProvider\n+import android.content.ContentValues\n+import android.database.Cursor\n+import android.net.Uri\n+import android.os.Bundle\n+import java.net.URI\n+import java.util.Locale\n+import org.dolphinemu.dolphinemu.features.settings.model.AchievementModel\n+\n+/**\n+ * Lets a companion app point the RetroAchievements client at a local proxy.\n+ *\n+ * The provider has to be exported without a permission to be reachable at all, so access is\n+ * decided here, against the calling package that Binder reports and the caller cannot set. A\n+ * caller is only served after the user allowed it in [RetroAchievementsHostOverrideAccessActivity].', 'path': 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/retroachievements/RetroAchievementsHostOverrideProvider.kt', 'position': 19, 'original_position': 19, 'commit_id': '8343bfcd38ec1922bed739418c9bea806f233955', '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': "Unless I misunderstood, I was seeing things the other way around. In other words, Dolphin doesn't expose a content provider but rather connect to one, as you said previously:\r\n\r\n> I'm open to a pull model: RAOfflineProxy exposes a content provider that returns whether the override is active and the host.\r\n\r\nMaybe I'm missing something, but is there a reason the existing API isn't used? https://raofflineproxy.com/automation-api.html#automation-api-android", 'created_at': '2026-11-12T19:33:32Z', 'updated_at': '2026-11-12T19:36:05Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4555361243', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14671', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555361243'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14671#discussion_r4555361243'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14671'}}, 'original_commit_id': '8343bfcd38ec1922bed739418c9bea806f233955', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4555361243/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-12T18:49:00.675974 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'submitted', 'pr_id': 15016, 'pr_title': 'HW/WiimoteReal: Remove BBDumpPort feature.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15016#pullrequestreview-5880179098', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-12T17:30:05.640869 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'submitted', 'pr_id': 15000, 'pr_title': 'NetPlay: Eliminate dependence on SFML.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15000#pullrequestreview-5878982724', 'comments': [{'id': 4553900546, 'node_id': 'PRRC_kwDOALCn2M8AAAABD28CAg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4553900546', 'pull_request_review_id': 5878982724, 'diff_hunk': '@@ -1,40 +0,0 @@\n-// Copyright 2018 Dolphin Emulator Project\n-// SPDX-License-Identifier: GPL-2.0-or-later\n-\n-#pragma once\n-\n-#include <SFML/Network/Packet.hpp>\n-\n-#include <utility>\n-\n-#include "Common/CommonTypes.h"\n-#include "Common/Swap.h"\n-#include "Common/TypeUtils.h"\n-\n-sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u16>& data);\n-sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u32>& data);\n-sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u64>& data);\n-\n-template <Common::Enum Enum>\n-sf::Packet& operator<<(sf::Packet& packet, Enum e)\n-{\n- packet << std::to_underlying(e);\n- return packet;\n-}\n-\n-template <Common::Enum Enum>\n-sf::Packet& operator>>(sf::Packet& packet, Enum& e)\n-{\n- using Underlying = std::underlying_type_t<Enum>;\n-\n- Underlying value{};\n- packet >> value;', 'path': 'Source/Core/Common/SFMLHelper.h', 'position': 31, 'original_position': 31, 'commit_id': '0934e81a9b42f80ddf299e41478f3b3c347f17c9', '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': 'The new implementation only assign value on success. So there might be places in the client and server where this might leave the value (e.g. MessageID) in an uninitialised state in some circumstances.', 'created_at': '2026-11-12T17:24:06Z', 'updated_at': '2026-11-12T17:30:02Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15000#discussion_r4553900546', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15000', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4553900546'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15000#discussion_r4553900546'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15000'}}, 'original_commit_id': '0934e81a9b42f80ddf299e41478f3b3c347f17c9', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4553900546/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-12T17:30:04.939693 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'edited', 'pr_id': 15000, 'pr_title': 'NetPlay: Eliminate dependence on SFML.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/15000#pullrequestreview-5878982724', 'comments': [{'id': 4553900546, 'node_id': 'PRRC_kwDOALCn2M8AAAABD28CAg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4553900546', 'pull_request_review_id': 5878982724, 'diff_hunk': '@@ -1,40 +0,0 @@\n-// Copyright 2018 Dolphin Emulator Project\n-// SPDX-License-Identifier: GPL-2.0-or-later\n-\n-#pragma once\n-\n-#include <SFML/Network/Packet.hpp>\n-\n-#include <utility>\n-\n-#include "Common/CommonTypes.h"\n-#include "Common/Swap.h"\n-#include "Common/TypeUtils.h"\n-\n-sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u16>& data);\n-sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u32>& data);\n-sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u64>& data);\n-\n-template <Common::Enum Enum>\n-sf::Packet& operator<<(sf::Packet& packet, Enum e)\n-{\n- packet << std::to_underlying(e);\n- return packet;\n-}\n-\n-template <Common::Enum Enum>\n-sf::Packet& operator>>(sf::Packet& packet, Enum& e)\n-{\n- using Underlying = std::underlying_type_t<Enum>;\n-\n- Underlying value{};\n- packet >> value;', 'path': 'Source/Core/Common/SFMLHelper.h', 'position': 31, 'original_position': 31, 'commit_id': '0934e81a9b42f80ddf299e41478f3b3c347f17c9', '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': 'The new implementation only assign value on success. So there might be places in the client and server where this might leave the value (e.g. MessageID) in an uninitialised state in some circumstances.', 'created_at': '2026-11-12T17:24:06Z', 'updated_at': '2026-11-12T17:30:02Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15000#discussion_r4553900546', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15000', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4553900546'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15000#discussion_r4553900546'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15000'}}, 'original_commit_id': '0934e81a9b42f80ddf299e41478f3b3c347f17c9', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4553900546/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-13T22:08:06.396631 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'after_sha': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'commits': [{'author': {'name': 'Hamid Zare', 'email': '12127420+hamidzr@users.noreply.github.com', 'date': '2026-11-13T15:01:11-06:00', 'username': 'hamidzr'}, 'distinct': False, 'added': [], 'modified': ['docs/CustomPipelineGraphicsMod.md', 'docs/ResourcePacks.md'], 'removed': [], 'message': 'Fix typos in documentation\n\nSigned-off-by: Hamid Zare <12127420+hamidzr@users.noreply.github.com>', 'url': 'https://github.com/dolphin-emu/dolphin/commit/c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'hash': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-13T16:08:03-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['docs/CustomPipelineGraphicsMod.md', 'docs/ResourcePacks.md'], 'removed': [], 'message': 'Merge pull request #15022 from hamidzr/fixtypos\n\nFix typos in documentation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'hash': '44e0c5663af1b37f71bad7fb73281f4d0677bd51'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T21:47:22.315193 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '2348b731e93570120a09671f57d82497700b0661', 'after_sha': '0000000000000000000000000000000000000000', 'commits': [], 'base_ref_name': None, 'ref_name': 'dependabot/uv/tornado-6.6', 'ref_type': 'heads', 'created': False, 'deleted': True, 'forced': False, 'type': 'gh_push'}
2026-11-13T21:47:09.419468 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-13T21:47:06Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': 'build(deps): bump tornado from 6.5.8 to 6.6.1\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.1.\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.1)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n dependency-version: 6.6.1\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/1a00a607e216319ad66331ba4a6a50627c6d9715', 'hash': '1a00a607e216319ad66331ba4a6a50627c6d9715'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/tornado-6.6.1', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T20:44:02.309880 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'e66427c87eb75e70a893270a8078045796b83df4', 'after_sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-13T03:31:26-06:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/VideoCommon/PerformanceTracker.cpp'], 'removed': [], 'message': 'PerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/63557b8a6713166770d49a649dbc84f6f1eca44a', 'hash': '63557b8a6713166770d49a649dbc84f6f1eca44a'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-13T14:43:59-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/VideoCommon/PerformanceTracker.cpp'], 'removed': [], 'message': 'Merge pull request #15019 from jordan-woyak/perf-track-fps-fix\n\nPerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/5c496d1838a20660590fece1edfdf58148f80a60', 'hash': '5c496d1838a20660590fece1edfdf58148f80a60'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T19:55:32.166842 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'after_sha': 'e66427c87eb75e70a893270a8078045796b83df4', 'commits': [{'author': {'name': 'dok.slade', 'email': 'dok.slade@gmail.com', 'date': '2026-11-11T21:05:24Z', 'username': 'dokslade'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/VideoBackends/OGL/OGLConfig.cpp', 'Source/Core/VideoBackends/OGL/OGLMain.cpp'], 'removed': [], 'message': 'OGL: Only show the Video Info OSD message when initializing the backend\n\nPopulateConfig is called through FillBackendInfo both from Initialize\nand from InitBackendInfo, which creates a temporary GL context to query\nthe backend\'s capabilities. InitBackendInfo runs when booting (from\nCore::Init) and when the graphics settings refresh the backend info, so\nthe "Video Info" message got queued two or three times, and all of them\nwere shown once the first frame was drawn.\n\nMove the OSD messages to Initialize so they\'re only added once per\nemulation start.\n\nFixes https://bugs.dolphin-emu.org/issues/13574', 'url': 'https://github.com/dolphin-emu/dolphin/commit/af2ccf4f72d6e3b001da54d7d0121370af87eda1', 'hash': 'af2ccf4f72d6e3b001da54d7d0121370af87eda1'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-13T13:55:28-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/VideoBackends/OGL/OGLConfig.cpp', 'Source/Core/VideoBackends/OGL/OGLMain.cpp'], 'removed': [], 'message': 'Merge pull request #15014 from dokslade/gl-osd-duplicate\n\nOGL: Only show the Video Info OSD message when initializing the backend', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e66427c87eb75e70a893270a8078045796b83df4', 'hash': 'e66427c87eb75e70a893270a8078045796b83df4'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T14:50:38.922606 {'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '0c9c824937815a2ad9644ac42908c12f49947df5', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-13T14:50:36Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': "build(deps): bump soupsieve from 2.9.2 to 4.0\n\nBumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.9.2 to 4.0.\n- [Release notes](https://github.com/facelessuser/soupsieve/releases)\n- [Commits](https://github.com/facelessuser/soupsieve/compare/2.9.2...4.0)\n\n---\nupdated-dependencies:\n- dependency-name: soupsieve\n dependency-version: '4.0'\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>", 'url': 'https://github.com/dolphin-emu/netplay-index/commit/0c9c824937815a2ad9644ac42908c12f49947df5', 'hash': '0c9c824937815a2ad9644ac42908c12f49947df5'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/soupsieve-4.0', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T02:00:40.477984 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '9cef41db5f6a2492fd7800c285ca9b039406606d', 'after_sha': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-11T18:56:06-06:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/Config/MainSettings.cpp', 'Source/Core/Core/Config/MainSettings.h', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.h'], 'removed': [], 'message': 'HW/WiimoteReal: Remove BBDumpPort feature.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/b4c90227c1f1035366f003d017327185979c2346', 'hash': 'b4c90227c1f1035366f003d017327185979c2346'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-12T20:00:37-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/Config/MainSettings.cpp', 'Source/Core/Core/Config/MainSettings.h', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.h'], 'removed': [], 'message': 'Merge pull request #15016 from jordan-woyak/remove-bb-dump-port\n\nHW/WiimoteReal: Remove BBDumpPort feature.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'hash': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T01:49:07.495201 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '21f3f312177cf4f1daeb2f312f096e0cd7482087', 'after_sha': '9cef41db5f6a2492fd7800c285ca9b039406606d', 'commits': [{'author': {'name': 'Joey', 'email': '44435198+JoeysRetroHandhelds@users.noreply.github.com', 'date': '2026-11-02T22:01:29-06:00', 'username': 'JoeysRetroHandhelds'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.cpp'], 'removed': [], 'message': 'WiimoteDevice: Don\'t send output reports to a null HID source\n\nReceiveL2capData forwarded HID output reports to m_hid_source without\nchecking it. SetSource accepts nullptr (e.g. Wii Remote set to "Real"\nwith no real remote connected), and the game\'s L2CAP channel can still\nbe open when that happens, so the next output report crashed the CPU\nthread with a null dereference.\n\nSeen on Android with Skylanders: Spyro\'s Adventure and Wii Remote 1 set\nto Real Wii Remote.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/4dcc95c37d84037c38973e3136d31280a0339c55', 'hash': '4dcc95c37d84037c38973e3136d31280a0339c55'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-12T19:49:05-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.cpp'], 'removed': [], 'message': "Merge pull request #14976 from JoeysRetroHandhelds/wiimote-null-hid-source\n\nWiimoteDevice: Don't send output reports to a null HID source", 'url': 'https://github.com/dolphin-emu/dolphin/commit/9cef41db5f6a2492fd7800c285ca9b039406606d', 'hash': '9cef41db5f6a2492fd7800c285ca9b039406606d'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T00:18:38.400168 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '4380df98287810ce9b69832b2f52023a220931e8', 'after_sha': '21f3f312177cf4f1daeb2f312f096e0cd7482087', 'commits': [{'author': {'name': 'Maxim Cournoyer', 'email': 'maxim@guixotic.coop', 'date': '2026-09-03T11:31:34+09:00'}, 'distinct': False, 'added': [], 'modified': ['CMake/DolphinLibraryTools.cmake'], 'removed': [], 'message': 'cmake: Find newer optional system libraries first.\n\nNew is usually better; currently the newest version is also the one that is\nshown when the search fails.\n\n* CMake/DolphinLibraryTools.cmake: Sort versions list provided by\nDOLPHIN_TRY_VERSIONS in descending order.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/b9bd69d57ec6f97447bd7382659a9c3c882dba9a', 'hash': 'b9bd69d57ec6f97447bd7382659a9c3c882dba9a'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-12T18:18:35-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['CMake/DolphinLibraryTools.cmake'], 'removed': [], 'message': 'Merge pull request #14841 from apteryks/try-newer-glslang-versions-first\n\ncmake: Try newer glslang versions first.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/21f3f312177cf4f1daeb2f312f096e0cd7482087', 'hash': '21f3f312177cf4f1daeb2f312f096e0cd7482087'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T00:16:14.517915 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'cf21d5dc0be92e274b15ab1917e7308f8139d310', 'after_sha': '4380df98287810ce9b69832b2f52023a220931e8', 'commits': [{'author': {'name': 'Lakhan Lothiyi', 'email': 'llsc12.dev@gmail.com', 'date': '2026-07-03T03:55:04+01:00', 'username': 'llsc12'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/DolphinQt/CheatsManager.cpp', 'Source/Core/DolphinQt/CheatsManager.h'], 'removed': [], 'message': 'fix cheat manager crash', 'url': 'https://github.com/dolphin-emu/dolphin/commit/016e11d73621005cc2b7d20244884b72e286b4a5', 'hash': '016e11d73621005cc2b7d20244884b72e286b4a5'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-12T18:16:11-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/DolphinQt/CheatsManager.cpp', 'Source/Core/DolphinQt/CheatsManager.h'], 'removed': [], 'message': 'Merge pull request #14713 from llsc12/master\n\nFix cheatsmanager crash', 'url': 'https://github.com/dolphin-emu/dolphin/commit/4380df98287810ce9b69832b2f52023a220931e8', 'hash': '4380df98287810ce9b69832b2f52023a220931e8'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T00:07:30.512629 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '836045f9cd3f31a596a9073065ad6fd81ab0cce1', 'after_sha': 'cf21d5dc0be92e274b15ab1917e7308f8139d310', 'commits': [{'author': {'name': 'Martino Fontana', 'email': 'tinozzo123@gmail.com', 'date': '2026-09-15T18:20:05+02:00', 'username': 'SuperSamus'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/MathUtil.h', 'Source/Core/VideoCommon/PerformanceTracker.cpp', 'Source/Core/VideoCommon/PerformanceTracker.h'], 'removed': [], 'message': "PerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation\n\nUpdateStats() was calculating the standard deviation from the entirety of m_dt_queue, which has a noticeable performance impact when the frame rates are very high.\nOn a scene so light it runs at 3000 FPS, UpdateStats() was taking around 5% of the profiling (at default 1s sample window). Now it doesn't.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/c6e63fb3ab481ec2b5fd41a8ea8ab9d7597250e1', 'hash': 'c6e63fb3ab481ec2b5fd41a8ea8ab9d7597250e1'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-12T18:07:27-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/MathUtil.h', 'Source/Core/VideoCommon/PerformanceTracker.cpp', 'Source/Core/VideoCommon/PerformanceTracker.h'], 'removed': [], 'message': 'Merge pull request #14877 from SuperSamus/performance-tracker-variance-fixup\n\nPerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/cf21d5dc0be92e274b15ab1917e7308f8139d310', 'hash': 'cf21d5dc0be92e274b15ab1917e7308f8139d310'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-13T00:00:45.978459 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'cd92a628f37c19333f5c5ee84c43aeb4b48ec9e3', 'after_sha': '836045f9cd3f31a596a9073065ad6fd81ab0cce1', 'commits': [{'author': {'name': 'dok.slade', 'email': 'dok.slade@gmail.com', 'date': '2026-11-11T15:59:56Z', 'username': 'dokslade'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/DolphinQt/Config/FilesystemWidget.cpp'], 'removed': [], 'message': "DolphinQt: Fix use-after-free of FilesystemWidget context menu\n\nThe context menu was created with Qt::WA_DeleteOnClose, but its actions\nopen modal dialogs from within QMenu's own activation code. A nested\nevent loop could process the menu's deferred deletion before control\nreturned to QMenu, which then accessed freed memory, causing crashes or\nheap corruption.\n\nOwn the menu with a std::unique_ptr so it is only destroyed once\nQMenu::exec has returned.\n\nFixes https://bugs.dolphin-emu.org/issues/13816", 'url': 'https://github.com/dolphin-emu/dolphin/commit/3ad596102a29095b23e58d509e2fd5d130241350', 'hash': '3ad596102a29095b23e58d509e2fd5d130241350'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-12T18:00:42-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/DolphinQt/Config/FilesystemWidget.cpp'], 'removed': [], 'message': 'Merge pull request #15011 from dokslade/filesystemwidget-menu-uaf\n\nDolphinQt: Fix use-after-free of FilesystemWidget context menu', 'url': 'https://github.com/dolphin-emu/dolphin/commit/836045f9cd3f31a596a9073065ad6fd81ab0cce1', 'hash': '836045f9cd3f31a596a9073065ad6fd81ab0cce1'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-12T23:58:41.610580 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'db2afcbdf8f5175a6b8414d9f5e21c978775f651', 'after_sha': 'cd92a628f37c19333f5c5ee84c43aeb4b48ec9e3', 'commits': [{'author': {'name': 'VampireFlower', 'email': 'monstercatspedup1@gmail.com', 'date': '2026-09-18T08:25:45-06:00', 'username': 'VampireFlower'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/HW/EXI/EXI_DeviceGecko.cpp', 'Source/Core/Core/HW/EXI/EXI_DeviceGecko.h'], 'removed': [], 'message': 'Optimize USB Gecko Emulation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/3ce096543c55fc12ca308f0300641c2f2b803993', 'hash': '3ce096543c55fc12ca308f0300641c2f2b803993'}, {'author': {'name': 'VampireFlower', 'email': 'monstercatspedup1@gmail.com', 'date': '2026-09-19T17:41:47-06:00', 'username': 'VampireFlower'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/HW/EXI/EXI_DeviceGecko.cpp', 'Source/Core/Core/HW/EXI/EXI_DeviceGecko.h'], 'removed': [], 'message': 'USB Gecko: Split transfer and receive locks & verify sent amount', 'url': 'https://github.com/dolphin-emu/dolphin/commit/af6c1f26d3ad3324b4273c49b08ee31d39500431', 'hash': 'af6c1f26d3ad3324b4273c49b08ee31d39500431'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-12T17:58:38-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 #14876 from VampireFlower/usbgecko\n\nOptimize USB Gecko Emulation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/cd92a628f37c19333f5c5ee84c43aeb4b48ec9e3', 'hash': 'cd92a628f37c19333f5c5ee84c43aeb4b48ec9e3'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-11T20:08:30.787085 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'iwubcode', 'before_sha': 'c830c9ec4b1d9ebb1e14b1b592b8ba03a1a0b759', 'after_sha': 'db2afcbdf8f5175a6b8414d9f5e21c978775f651', 'commits': [{'author': {'name': 'Clownacy', 'email': 'Clownacy@users.noreply.github.com', 'date': '2025-06-29T10:51:41+01:00', 'username': 'Clownacy'}, 'distinct': False, 'added': ['Data/Sys/Shaders/crt_lottes_fast.glsl', 'Data/Sys/Shaders/crt_pi.glsl'], 'modified': [], 'removed': [], 'message': "Add CRT shaders\n\nI've ported a couple of shaders from RetroArch - particularly the\ncrt-pi and crt-lottes-fast ones. Unlike other shaders such as\ncrt-royale, these shaders are single-pass, allowing them to work\nwithin Dolphin's framework. These look pretty good when paired with\nnative resolution and SSAA.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/67c4c8fd7ff05982ea2344b4ec70e9f901a1a894', 'hash': '67c4c8fd7ff05982ea2344b4ec70e9f901a1a894'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-10-28T15:43:45-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Data/Sys/Shaders/crt_pi.glsl'], 'removed': [], 'message': 'Shaders/crt_pi: Alter scanline weight calculation to use a fixed number of scanlines.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/471988131524e6856d83ac3672d7853659abe0ce', 'hash': '471988131524e6856d83ac3672d7853659abe0ce'}, {'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-11-11T14:08:27-06:00', 'username': 'iwubcode'}, 'distinct': True, 'added': ['Data/Sys/Shaders/crt_lottes_fast.glsl', 'Data/Sys/Shaders/crt_pi.glsl'], 'modified': [], 'removed': [], 'message': 'Merge pull request #12014 from Clownacy/master\n\nAdd CRT shaders', 'url': 'https://github.com/dolphin-emu/dolphin/commit/db2afcbdf8f5175a6b8414d9f5e21c978775f651', 'hash': 'db2afcbdf8f5175a6b8414d9f5e21c978775f651'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-11T19:05:54.612692 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '36982a2b32e8dec9107618d5db923e5b8aabcd87', 'after_sha': 'c830c9ec4b1d9ebb1e14b1b592b8ba03a1a0b759', 'commits': [{'author': {'name': 'Joshua Vandaële', 'email': 'joshua@vandaele.software', 'date': '2026-10-24T16:43:48+02:00', 'username': 'JoshuaVandaele'}, 'distinct': False, 'added': [], 'modified': ['Externals/glslang/CMakeLists.txt'], 'removed': [], 'message': 'Externals/glslang: Fix Clang header conflicts', 'url': 'https://github.com/dolphin-emu/dolphin/commit/7657e69805d89531a82169de1fd8231acdd6214a', 'hash': '7657e69805d89531a82169de1fd8231acdd6214a'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-11T13:05:51-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Externals/glslang/CMakeLists.txt'], 'removed': [], 'message': 'Merge pull request #15009 from JoshuaVandaele/clang-include-weirdness\n\nExternals/glslang: Fix Clang header conflicts', 'url': 'https://github.com/dolphin-emu/dolphin/commit/c830c9ec4b1d9ebb1e14b1b592b8ba03a1a0b759', 'hash': 'c830c9ec4b1d9ebb1e14b1b592b8ba03a1a0b759'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-11T03:28:11.809494 {'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'pusher': 'OatmealDome', 'before_sha': 'b6f020f4f1666cdd151cea2f3283f714e6457d7b', 'after_sha': 'f2a02a6e487837a8c4a5fd9c5bb927b70ea9b0b3', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-10T19:03:24-05:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/flatpak-worker/utils/clean_cache.sh'], 'removed': [], 'message': 'flatpak-worker: Decrease maximum cache size to 5GB', 'url': 'https://github.com/dolphin-emu/sadm/commit/f2a02a6e487837a8c4a5fd9c5bb927b70ea9b0b3', 'hash': 'f2a02a6e487837a8c4a5fd9c5bb927b70ea9b0b3'}], '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-13T23:51:51.718771 {'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,leoetlino,OatmealDome,CrossVR,iwubcode,Tilka,degasus,Pokechu22,linkmauve,AdmiralCurtiss,JosJuice,jordan-woyak,Dentomologist')", 'type': 'internal_log'}
2026-11-13T23:51:51.390901 {'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-13T23:50:05.729450 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:50:04.220348 {'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-13T23:45:04.219950 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:45:02.615654 {'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-13T23:41:51.390663 {'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,leoetlino,OatmealDome,CrossVR,iwubcode,Tilka,degasus,Pokechu22,linkmauve,AdmiralCurtiss,JosJuice,jordan-woyak,Dentomologist')", 'type': 'internal_log'}
2026-11-13T23:41:51.075841 {'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-13T23:40:02.615324 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:40:01.059953 {'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-13T23:35:01.059631 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:34:59.232551 {'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-13T23:31:51.075637 {'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,leoetlino,OatmealDome,CrossVR,iwubcode,Tilka,degasus,Pokechu22,linkmauve,AdmiralCurtiss,JosJuice,jordan-woyak,Dentomologist')", 'type': 'internal_log'}
2026-11-13T23:31:50.716916 {'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-13T23:29:59.232188 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:29:57.652449 {'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-13T23:24:57.651953 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:24:55.962592 {'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-13T23:21:50.716678 {'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,leoetlino,OatmealDome,CrossVR,iwubcode,Tilka,degasus,Pokechu22,linkmauve,AdmiralCurtiss,JosJuice,jordan-woyak,Dentomologist')", 'type': 'internal_log'}
2026-11-13T23:21:50.403512 {'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-13T23:19:55.959872 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:19:53.407787 {'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-13T23:14:53.407144 {'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', 'leoetlino,spxtr,Tilka,cscd98,gwicks,dreamsyntax,jjdelvalle,iwubcode,RisingFog,Sintendo,bentley,SuperSamus,Starsam80,cristian64,LPFaint99,aroulin,linkmauve,tygyh,Stevoisiak,corwin-mcknight,K0bin,SirMangler,mmastrac,magumagu,CasualPokePlayer,PatrickFerry,mitaclaw,CrystalGamma,Linktothepast,aldelaro5,krnlyng,Hydr8gon,Techjar,Parlane,shonumi,skidau,sepalani,nullgemm,yourWaifu,mbc07,Ziek,NanoByte011,Orphis,kayru,Gamer64ytb,LillyJadeKatrin,BhaaLseN,JoshuaVandaele,Lobsterzelda,moncefmechri,EmptyChaos,kamiyo,mahdihijazi,magcius,smurf3tte,deReeperJosh,Simonx22,adamdmoss,Filoppi,JosJuice,Buddybenj,Dentomologist,hrydgard,malleoz,Ebola16,CrossVR,glennricster,galop1n,neobrain,unknownbrackets,mandar1jn,Geotale,hackbar,CookiePLMonster,mrgreywater,randomstuff,FioraAeterna,orbea,Helios747,comex,MayImilae,meffij,ShimmerGlass,Sir-Walrus,tom-pratt,jezze,nickbeth,crediar,archshift,jloehr,Sam-Belliveau,marcan,rukai,skylersaleh,JordanTheToaster,Pokechu22,CelestialAmber,AdmiralCurtiss,hthh,jordan-woyak,DacoTaco,phire,Zopolis4,booto,endrift,mimimi085181,delroth,spycrab,TryTwo,RachelBryk,vladfi1,merryhime,riking,Linkinworm,OrN,ColinDTaylor,ligfx,TellowKrinkle,Phatcat,noahpistilli,zackhow,lioncash,Tinob,VampireFlower,LAGonauta,hdcmeta,rlnilsen,mathieui,OatmealDome,JMC47,degasus,zopieux')", 'type': 'internal_log'}
2026-11-13T23:14:51.717780 {'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-13T23:11:50.403226 {'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,leoetlino,OatmealDome,CrossVR,iwubcode,Tilka,degasus,Pokechu22,linkmauve,AdmiralCurtiss,JosJuice,jordan-woyak,Dentomologist')", 'type': 'internal_log'}
Recent 'issue' events
2026-11-13T20:44:24.389420 {'source': 'redmine', 'new': False, 'update': 7, 'issue': 14181, 'title': 'FPS display continues to increases with play time.', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T19:56:18.349021 {'source': 'redmine', 'new': False, 'update': 3, 'issue': 13574, 'title': 'OGL Video Info OSD message appears multiple times on emulation startup', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T16:13:41.552614 {'source': 'redmine', 'new': False, 'update': 6, 'issue': 14181, 'title': 'FPS display continues to increases with play time.', 'author': 'AtomicCandy', 'type': 'issue'}
2026-11-13T10:12:56.212185 {'source': 'redmine', 'new': False, 'update': 4, 'issue': 14134, 'title': 'New Development Releases cannot run any game!', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T10:12:44.105611 {'source': 'redmine', 'new': False, 'update': 7, 'issue': 14147, 'title': 'Mac: Unable to resolve read address 812fffc8 PC 500', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T10:12:19.018201 {'source': 'redmine', 'new': False, 'update': 6, 'issue': 14147, 'title': 'Mac: Unable to resolve read address 812fffc8 PC 500', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T10:10:39.182429 {'source': 'redmine', 'new': False, 'update': 3, 'issue': 14134, 'title': 'New Development Releases cannot run any game!', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T10:07:06.587811 {'source': 'redmine', 'new': False, 'update': 5, 'issue': 14126, 'title': 'Aspect ratio problem in R:Racing', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T09:54:56.083451 {'source': 'redmine', 'new': False, 'update': 2, 'issue': 14178, 'title': 'macOS: PSVR2 Sense controllers cause excessive SDL CPU usage and severe emulation slowdown', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T09:50:30.364211 {'source': 'redmine', 'new': False, 'update': 5, 'issue': 14181, 'title': 'FPS display continues to increases with play time.', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T06:42:27.097806 {'source': 'redmine', 'new': False, 'update': 4, 'issue': 14181, 'title': 'FPS display continues to increases with play time.', 'author': 'AtomicCandy', 'type': 'issue'}
2026-11-13T05:43:06.459589 {'source': 'redmine', 'new': False, 'update': 3, 'issue': 14181, 'title': 'FPS display continues to increases with play time.', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T04:45:20.182458 {'source': 'redmine', 'new': False, 'update': 2, 'issue': 14181, 'title': 'FPS display continues to increases with play time.', 'author': 'Billiard26', 'type': 'issue'}
2026-11-13T04:29:48.839191 {'source': 'redmine', 'new': True, 'update': 0, 'issue': 14181, 'title': 'FPS display continues to increases with play time.', 'author': 'AtomicCandy', 'type': 'issue'}
2026-11-12T22:08:57.802497 {'source': 'redmine', 'new': False, 'update': 8, 'issue': 8037, 'title': '1080 Snowboarding (VC N64) Requires Accurate icache emulation', 'author': 'dok.slade', 'type': 'issue'}
2026-11-11T22:23:29.754680 {'source': 'redmine', 'new': False, 'update': 2, 'issue': 14180, 'title': '[Android] Add option to choose external display (XR glasses)', 'author': 'Billiard26', 'type': 'issue'}
2026-11-11T22:16:06.246209 {'source': 'redmine', 'new': True, 'update': 0, 'issue': 14180, 'title': '[Android] Add option to choose external display (XR glasses)', 'author': 'RationalRepublic', 'type': 'issue'}
2026-11-11T21:27:48.742221 {'source': 'redmine', 'new': False, 'update': 2, 'issue': 13574, 'title': 'OGL Video Info OSD message appears multiple times on emulation startup', 'author': 'dok.slade', 'type': 'issue'}
2026-11-11T20:24:10.965682 {'source': 'redmine', 'new': False, 'update': 14, 'issue': 13354, 'title': 'Games stop responding to input after losing focus once (Linux, OpenGL)', 'author': 'Billiard26', 'type': 'issue'}
2026-11-11T19:58:19.210132 {'source': 'redmine', 'new': False, 'update': 4, 'issue': 11712, 'title': 'When Background Input unchecked, clicking to other windows does not disable input', 'author': 'dok.slade', 'type': 'issue'}
2026-11-11T19:54:53.169048 {'source': 'redmine', 'new': False, 'update': 13, 'issue': 13354, 'title': 'Games stop responding to input after losing focus once (Linux, OpenGL)', 'author': 'dok.slade', 'type': 'issue'}
2026-11-11T19:30:31.851508 {'source': 'redmine', 'new': False, 'update': 10, 'issue': 13816, 'title': 'Extracting a file from filesystem crashes on Linux', 'author': 'Billiard26', 'type': 'issue'}
2026-11-11T17:35:35.236772 {'source': 'redmine', 'new': False, 'update': 14, 'issue': 14176, 'title': 'Problem with GameCube ROMs running in Wii mode', 'author': 'AMGPlayz', 'type': 'issue'}
2026-11-11T17:16:04.669301 {'source': 'redmine', 'new': False, 'update': 13, 'issue': 14176, 'title': 'Problem with GameCube ROMs running in Wii mode', 'author': 'JosJuice', 'type': 'issue'}
2026-11-11T17:10:19.840671 {'source': 'redmine', 'new': False, 'update': 12, 'issue': 14176, 'title': 'Problem with GameCube ROMs running in Wii mode', 'author': 'AMGPlayz', 'type': 'issue'}
Recent 'new_dev_version' events
2026-11-13T22:08:07.961607 {'source': 'repomanager', 'hash': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'branch': 'master', 'shortrev': '2609-227', 'author': 'Jordan Woyak', 'message': 'Merge pull request #15022 from hamidzr/fixtypos\n\nFix typos in documentation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'type': 'new_dev_version'}
2026-11-13T20:44:03.917925 {'source': 'repomanager', 'hash': '5c496d1838a20660590fece1edfdf58148f80a60', 'branch': 'master', 'shortrev': '2609-225', 'author': 'Jordan Woyak', 'message': 'Merge pull request #15019 from jordan-woyak/perf-track-fps-fix\n\nPerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/5c496d1838a20660590fece1edfdf58148f80a60', 'type': 'new_dev_version'}
2026-11-13T19:55:33.836573 {'source': 'repomanager', 'hash': 'e66427c87eb75e70a893270a8078045796b83df4', 'branch': 'master', 'shortrev': '2609-223', 'author': 'Jordan Woyak', 'message': 'Merge pull request #15014 from dokslade/gl-osd-duplicate\n\nOGL: Only show the Video Info OSD message when initializing the backend', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e66427c87eb75e70a893270a8078045796b83df4', 'type': 'new_dev_version'}
2026-11-13T02:00:42.000919 {'source': 'repomanager', 'hash': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'branch': 'master', 'shortrev': '2609-221', 'author': 'Jordan Woyak', 'message': 'Merge pull request #15016 from jordan-woyak/remove-bb-dump-port\n\nHW/WiimoteReal: Remove BBDumpPort feature.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', 'type': 'new_dev_version'}
2026-11-13T01:49:09.060502 {'source': 'repomanager', 'hash': '9cef41db5f6a2492fd7800c285ca9b039406606d', 'branch': 'master', 'shortrev': '2609-219', 'author': 'Jordan Woyak', 'message': "Merge pull request #14976 from JoeysRetroHandhelds/wiimote-null-hid-source\n\nWiimoteDevice: Don't send output reports to a null HID source", 'url': 'https://github.com/dolphin-emu/dolphin/commit/9cef41db5f6a2492fd7800c285ca9b039406606d', 'type': 'new_dev_version'}
2026-11-13T00:18:40.280113 {'source': 'repomanager', 'hash': '21f3f312177cf4f1daeb2f312f096e0cd7482087', 'branch': 'master', 'shortrev': '2609-217', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14841 from apteryks/try-newer-glslang-versions-first\n\ncmake: Try newer glslang versions first.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/21f3f312177cf4f1daeb2f312f096e0cd7482087', 'type': 'new_dev_version'}
2026-11-13T00:16:16.313857 {'source': 'repomanager', 'hash': '4380df98287810ce9b69832b2f52023a220931e8', 'branch': 'master', 'shortrev': '2609-215', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14713 from llsc12/master\n\nFix cheatsmanager crash', 'url': 'https://github.com/dolphin-emu/dolphin/commit/4380df98287810ce9b69832b2f52023a220931e8', 'type': 'new_dev_version'}
2026-11-13T00:07:32.202358 {'source': 'repomanager', 'hash': 'cf21d5dc0be92e274b15ab1917e7308f8139d310', 'branch': 'master', 'shortrev': '2609-213', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14877 from SuperSamus/performance-tracker-variance-fixup\n\nPerformanceTracker: Small cleanup, properly use RunningVariance for the standard deviation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/cf21d5dc0be92e274b15ab1917e7308f8139d310', 'type': 'new_dev_version'}
2026-11-13T00:00:48.311128 {'source': 'repomanager', 'hash': '836045f9cd3f31a596a9073065ad6fd81ab0cce1', 'branch': 'master', 'shortrev': '2609-211', 'author': 'Jordan Woyak', 'message': 'Merge pull request #15011 from dokslade/filesystemwidget-menu-uaf\n\nDolphinQt: Fix use-after-free of FilesystemWidget context menu', 'url': 'https://github.com/dolphin-emu/dolphin/commit/836045f9cd3f31a596a9073065ad6fd81ab0cce1', 'type': 'new_dev_version'}
2026-11-12T23:58:43.338598 {'source': 'repomanager', 'hash': 'cd92a628f37c19333f5c5ee84c43aeb4b48ec9e3', 'branch': 'master', 'shortrev': '2609-209', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14876 from VampireFlower/usbgecko\n\nOptimize USB Gecko Emulation', 'url': 'https://github.com/dolphin-emu/dolphin/commit/cd92a628f37c19333f5c5ee84c43aeb4b48ec9e3', 'type': 'new_dev_version'}
2026-11-11T20:08:32.501086 {'source': 'repomanager', 'hash': 'db2afcbdf8f5175a6b8414d9f5e21c978775f651', 'branch': 'master', 'shortrev': '2609-206', 'author': 'iwubcode', 'message': 'Merge pull request #12014 from Clownacy/master\n\nAdd CRT shaders', 'url': 'https://github.com/dolphin-emu/dolphin/commit/db2afcbdf8f5175a6b8414d9f5e21c978775f651', 'type': 'new_dev_version'}
2026-11-11T19:05:56.691483 {'source': 'repomanager', 'hash': 'c830c9ec4b1d9ebb1e14b1b592b8ba03a1a0b759', 'branch': 'master', 'shortrev': '2609-203', 'author': 'Jordan Woyak', 'message': 'Merge pull request #15009 from JoshuaVandaele/clang-include-weirdness\n\nExternals/glslang: Fix Clang header conflicts', 'url': 'https://github.com/dolphin-emu/dolphin/commit/c830c9ec4b1d9ebb1e14b1b592b8ba03a1a0b759', 'type': 'new_dev_version'}
Recent 'notification' events
2026-11-13T23:07:21.407697 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 synchronized pull request #15007: HW/WiimoteReal: Simplify the IsBalanceBoard check and hopefully make it more reliable. (\x0306master\x03...\x0306is-balance-board-simple-test\x03): \x1f\x0302https://dolp.in/pr15007\x03\x1f', 'type': 'notification'}
2026-11-13T23:04:56.873414 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #14991 (OGL: Warn about Intel Mesa GPU hangs on Linux): \x1f\x0302https://dolp.in/pr14991#issuecomment-6867139863\x03\x1f', 'type': 'notification'}
2026-11-13T22:08:06.794744 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 merged pull request #15022: Fix typos in documentation (\x0306master\x03...\x0306fixtypos\x03): \x1f\x0302https://dolp.in/pr15022\x03\x1f', 'type': 'notification'}
2026-11-13T22:08:06.397086 {'source': 'notifications', 'msg': '44e0c5 by \x0303J\ufeffordan Woyak\x03 [\x03090\x03|\x03092\x03|\x03040\x03] \x1f\x0302https://dolp.in/r44e0c5663af1b37f71bad7fb73281f4d0677bd51\x03\x1f Merge pull request #15022 from hamidzr/fixtypos', 'type': 'notification'}
2026-11-13T22:08:06.396978 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x1f\x03] \x0303j\ufeffordan-woyak\x03 pushed \x021\x02 new commit to \x0306master\x03', 'type': 'notification'}
2026-11-13T21:47:22.315563 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x1f\x03] \x0303d\ufeffependabot[bot]\x03 \x0304deleted \x0306dependabot/uv/tornado-6.6\x03 at \x03142348b7\x03', 'type': 'notification'}
2026-11-13T21:47:20.849977 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 closed pull request #18: build(deps): bump tornado from 6.5.8 to 6.6 (\x0306master\x03...\x0306dependabot/uv/tornado-6.6\x03): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/18\x03\x1f', 'type': 'notification'}
2026-11-13T21:47:18.840434 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 commented on #18 (build(deps): bump tornado from 6.5.8 to 6.6): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/18#issuecomment-6865726417\x03\x1f', 'type': 'notification'}
2026-11-13T21:47:14.925897 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 labeled pull request #20: build(deps): bump tornado from 6.5.8 to 6.6.1 (\x0306master\x03...\x0306dependabot/uv/tornado-6.6.1\x03): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/20\x03\x1f', 'type': 'notification'}
2026-11-13T21:47:14.583328 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 labeled pull request #20: build(deps): bump tornado from 6.5.8 to 6.6.1 (\x0306master\x03...\x0306dependabot/uv/tornado-6.6.1\x03): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/20\x03\x1f', 'type': 'notification'}
2026-11-13T21:47:12.527289 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 opened pull request #20: build(deps): bump tornado from 6.5.8 to 6.6.1 (\x0306master\x03...\x0306dependabot/uv/tornado-6.6.1\x03): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/20\x03\x1f', 'type': 'notification'}
2026-11-13T21:47:09.419818 {'source': 'notifications', 'msg': '1a00a6 by \x0303d\ufeffependabot[bot]\x03 [\x03090\x03|\x03091\x03|\x03040\x03] \x1f\x0302https://github.com/dolphin-emu/netplay-index/commit/1a00a607e216319ad66331ba4a6a50627c6d9715\x03\x1f build(deps): bump tornado from 6.5.8 to 6.6.1', 'type': 'notification'}
2026-11-13T21:47:09.419719 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x1f\x03] \x0303d\ufeffependabot[bot]\x03 created \x0306dependabot/uv/tornado-6.6.1\x03 +\x021\x02 new commit', 'type': 'notification'}
2026-11-13T21:41:36.256641 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303i\ufeffwubcode\x03 approved pull request #15021 (VideoCommon/OGL: Detect modern Intel Mesa driver (iris/crocus)): \x1f\x0302https://dolp.in/pr15021#pullrequestreview-5898441889\x03\x1f', 'type': 'notification'}
2026-11-13T21:40:42.011631 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303i\ufeffwubcode\x03 approved pull request #15022 (Fix typos in documentation): \x1f\x0302https://dolp.in/pr15022#pullrequestreview-5898431897\x03\x1f', 'type': 'notification'}
2026-11-13T21:15:06.066387 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 approved pull request #15022 (Fix typos in documentation): \x1f\x0302https://dolp.in/pr15022#pullrequestreview-5898146915\x03\x1f', 'type': 'notification'}
2026-11-13T21:01:47.042120 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #15022 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
2026-11-13T21:01:15.929921 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303h\ufeffamidzr\x03 opened pull request #15022: Fix typos in documentation (\x0306master\x03...\x0306fixtypos\x03): \x1f\x0302https://dolp.in/pr15022\x03\x1f', 'type': 'notification'}
2026-11-13T20:44:24.389628 {'source': 'notifications', 'msg': 'Update 7 to issue 14181 ("FPS display continues to increases with play time.") by \x0303B\ufeffilliard26\x03 - \x1f\x0302https://dolp.in/i14181/7\x03\x1f', 'type': 'notification'}
2026-11-13T20:44:02.978326 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 merged pull request #15019: PerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay. (\x0306master\x03...\x0306perf-track-fps-fix\x03): \x1f\x0302https://dolp.in/pr15019\x03\x1f', 'type': 'notification'}
2026-11-13T20:44:02.310320 {'source': 'notifications', 'msg': '5c496d by \x0303J\ufeffordan Woyak\x03 [\x03090\x03|\x03091\x03|\x03040\x03] \x1f\x0302https://dolp.in/r5c496d1838a20660590fece1edfdf58148f80a60\x03\x1f Merge pull request #15019 from jordan-woyak/perf-track-fps-fix', 'type': 'notification'}
2026-11-13T20:44:02.310213 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x1f\x03] \x0303j\ufeffordan-woyak\x03 pushed \x021\x02 new commit to \x0306master\x03', 'type': 'notification'}
2026-11-13T20:15:12.698394 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #15021 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
2026-11-13T20:14:41.732969 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffpferraz-git\x03 opened pull request #15021: VideoCommon/OGL: Detect modern Intel Mesa driver (iris/crocus) (\x0306master\x03...\x0306fix/ogl-mesa-iris-driver-detection\x03): \x1f\x0302https://dolp.in/pr15021\x03\x1f', 'type': 'notification'}
2026-11-13T20:10:56.022052 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 approved pull request #15013 (OGL: Call InitDriverInfo() before checking DriverDetails in PopulateConfig()): \x1f\x0302https://dolp.in/pr15013#pullrequestreview-5897344475\x03\x1f', 'type': 'notification'}
Recent 'pull_request_fifoci_status' events
2026-11-13T23:51:21.049789 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 15007, 'type': 'pull_request_fifoci_status'}
2026-11-13T23:41:52.155157 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 15007, 'type': 'pull_request_fifoci_status'}
2026-11-13T23:34:48.264373 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 15007, 'type': 'pull_request_fifoci_status'}
2026-11-13T23:30:58.958548 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 15007, 'type': 'pull_request_fifoci_status'}
2026-11-13T21:54:22.442285 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6280847d3898f52145f0f1d5f7a17d0e3af573a8', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 15017, 'type': 'pull_request_fifoci_status'}
2026-11-13T21:41:53.900492 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f40c96627dbae53f16f6d2030c823672c702cafb', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 15003, 'type': 'pull_request_fifoci_status'}
2026-11-13T21:34:57.059404 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6280847d3898f52145f0f1d5f7a17d0e3af573a8', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 15017, 'type': 'pull_request_fifoci_status'}
2026-11-13T21:27:19.145624 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6280847d3898f52145f0f1d5f7a17d0e3af573a8', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 15017, 'type': 'pull_request_fifoci_status'}
2026-11-13T20:48:31.332139 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f40c96627dbae53f16f6d2030c823672c702cafb', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 15003, 'type': 'pull_request_fifoci_status'}
2026-11-13T20:45:55.119433 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6280847d3898f52145f0f1d5f7a17d0e3af573a8', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 15017, 'type': 'pull_request_fifoci_status'}
2026-11-13T20:01:58.754027 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6280847d3898f52145f0f1d5f7a17d0e3af573a8', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 15017, 'type': 'pull_request_fifoci_status'}
2026-11-13T19:57:46.050112 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f40c96627dbae53f16f6d2030c823672c702cafb', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 15003, 'type': 'pull_request_fifoci_status'}
2026-11-13T19:40:54.111325 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f40c96627dbae53f16f6d2030c823672c702cafb', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 15003, 'type': 'pull_request_fifoci_status'}
2026-11-13T19:39:20.449598 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f40c96627dbae53f16f6d2030c823672c702cafb', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 15003, 'type': 'pull_request_fifoci_status'}
2026-11-13T11:25:58.330573 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '7ef155dbd9b1d3318ea8b8a101791bc6b5f94746', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 15020, 'type': 'pull_request_fifoci_status'}
2026-11-13T11:14:06.086877 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 15019, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:59:50.426837 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '2cc8d72ba0b9cc97744cacdc867e36fdc6b4944c', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 15003, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:50:22.240022 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '7ef155dbd9b1d3318ea8b8a101791bc6b5f94746', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 15020, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:45:47.495194 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '7ef155dbd9b1d3318ea8b8a101791bc6b5f94746', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 15020, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:39:31.197554 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '7ef155dbd9b1d3318ea8b8a101791bc6b5f94746', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 15020, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:38:09.607102 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 15019, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:28:40.640165 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '7ef155dbd9b1d3318ea8b8a101791bc6b5f94746', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 15020, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:16:52.798623 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 15019, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:14:55.397233 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 15019, 'type': 'pull_request_fifoci_status'}
2026-11-13T10:05:57.768642 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '63557b8a6713166770d49a649dbc84f6f1eca44a', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 15019, 'type': 'pull_request_fifoci_status'}
Recent 'raw_bb_hook' events
2026-11-13T23:51:20.374179 {'source': 'webserver', 'raw': {'buildid': 198693, 'number': 9672, 'builderid': 10, 'buildrequestid': 199389, 'workerid': 5, 'masterid': 1, 'started_at': 1794612876, 'complete_at': 1794613869, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builderid': [10, 'Builder'], 'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'pr_id': [15007, 'Trigger'], 'repository': ['', 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'buildnumber': [9672, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'branchname': ['pr-15007', 'Trigger'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'warnings-count': [3, 'WarningCountingShellCommand'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-ogl-lin-mesa', 'Worker']}, 'buildrequest': {'buildrequestid': 199389, 'buildsetid': 44545, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1794612876, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/9672'}, 'type': 'raw_bb_hook'}
2026-11-13T23:51:15.918380 {'source': 'webserver', 'raw': {'buildid': 198694, 'number': 5658, 'builderid': 41, 'buildrequestid': 199391, 'workerid': 5, 'masterid': 1, 'started_at': 1794613869, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'workername': ['altair-fifoci', 'Worker'], 'branchname': ['pr-15007', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'codebase': ['', 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'builderid': [41, 'Builder'], 'branch': ['refs/pull/15007/head', 'Build'], 'repository': ['', 'Build'], 'pr_id': [15007, 'Trigger'], 'buildername': ['pr-fifoci-vk-lin-mesa', 'Builder'], 'buildnumber': [5658, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 199391, 'buildsetid': 44545, 'builderid': 41, 'priority': 0, 'claimed': True, 'claimed_at': 1794613869, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/5658'}, 'type': 'raw_bb_hook'}
2026-11-13T23:41:51.531947 {'source': 'webserver', 'raw': {'buildid': 198692, 'number': 9347, 'builderid': 19, 'buildrequestid': 199387, 'workerid': 8, 'masterid': 1, 'started_at': 1794612647, 'complete_at': 1794613301, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'pr_id': [15007, 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'workername': ['osx-m1', 'Worker'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-15007', 'Trigger'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mvk-osx-m1', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builderid': [19, 'Builder'], 'buildnumber': [9347, 'Build'], 'repository': ['', 'Build'], 'warnings-count': [114, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 199387, 'buildsetid': 44544, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1794612647, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611987, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44544, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794611987, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198683, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198683, 'number': 11046, 'builderid': 7, 'buildrequestid': 199375, 'workerid': 8, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611987, '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/9347'}, 'type': 'raw_bb_hook'}
2026-11-13T23:34:48.019168 {'source': 'webserver', 'raw': {'buildid': 198693, 'number': 9672, 'builderid': 10, 'buildrequestid': 199389, 'workerid': 5, 'masterid': 1, 'started_at': 1794612876, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'builderid': [10, 'Builder'], 'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'pr_id': [15007, 'Trigger'], 'repository': ['', 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'buildnumber': [9672, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-15007', 'Trigger'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker']}, 'buildrequest': {'buildrequestid': 199389, 'buildsetid': 44545, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1794612876, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/9672'}, 'type': 'raw_bb_hook'}
2026-11-13T23:34:47.652288 {'source': 'webserver', 'raw': {'buildid': 198689, 'number': 9671, 'builderid': 35, 'buildrequestid': 199390, 'workerid': 5, 'masterid': 1, 'started_at': 1794612035, 'complete_at': 1794612876, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Trigger'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9671, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/var/lib/fifoci-worker/worker', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'warnings-count': [3, 'WarningCountingShellCommand'], 'pr_id': [15007, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'repository': ['', 'Build'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'builderid': [35, 'Builder'], 'builddir': ['/var/lib/fifoci-worker/worker/pr-fifoci-sw-lin-mesa', 'Worker']}, 'buildrequest': {'buildrequestid': 199390, 'buildsetid': 44545, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1794612035, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/9671'}, 'type': 'raw_bb_hook'}
2026-11-13T23:30:58.367760 {'source': 'webserver', 'raw': {'buildid': 198692, 'number': 9347, 'builderid': 19, 'buildrequestid': 199387, 'workerid': 8, 'masterid': 1, 'started_at': 1794612647, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'pr_id': [15007, 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'workername': ['osx-m1', 'Worker'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-15007', 'Trigger'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'builderid': [19, 'Builder'], 'buildnumber': [9347, 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 199387, 'buildsetid': 44544, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1794612647, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611987, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44544, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794611987, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198683, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198683, 'number': 11046, 'builderid': 7, 'buildrequestid': 199375, 'workerid': 8, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611987, '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/9347'}, 'type': 'raw_bb_hook'}
2026-11-13T23:30:58.223210 {'source': 'webserver', 'raw': {'buildid': 198688, 'number': 9349, 'builderid': 21, 'buildrequestid': 199388, 'workerid': 8, 'masterid': 1, 'started_at': 1794611987, 'complete_at': 1794612647, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Trigger'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'pr_id': [15007, 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'builderid': [21, 'Builder'], 'buildnumber': [9349, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'codebase': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mtl-osx-m1', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'workername': ['osx-m1', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'warnings-count': [114, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 199388, 'buildsetid': 44544, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1794611987, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611987, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44544, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794611987, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198683, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198683, 'number': 11046, 'builderid': 7, 'buildrequestid': 199375, 'workerid': 8, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611987, '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/9349'}, 'type': 'raw_bb_hook'}
2026-11-13T23:30:33.241550 {'source': 'webserver', 'raw': {'buildid': 198690, 'number': 11026, 'builderid': 1, 'buildrequestid': 199373, 'workerid': 9, 'masterid': 1, 'started_at': 1794612075, 'complete_at': 1794612633, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'pr_id': [15007, 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'builddir': ['/buildbot/pr-deb-dbg-x64', 'Worker'], 'branchname': ['pr-15007', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/15007/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'workername': ['debian', 'Worker'], 'codebase': ['', 'Build'], 'warnings-count': [3, 'WarningCountingShellCommand'], 'builderid': [1, 'Builder'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'buildnumber': [11026, 'Build'], 'repository': ['', 'Build'], 'basedir': ['/buildbot', 'Worker']}, 'buildrequest': {'buildrequestid': 199373, 'buildsetid': 44542, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1794612075, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11026'}, 'type': 'raw_bb_hook'}
2026-11-13T23:29:00.120023 {'source': 'webserver', 'raw': {'buildid': 198691, 'number': 11035, 'builderid': 31, 'buildrequestid': 199382, 'workerid': 4, 'masterid': 1, 'started_at': 1794612197, 'complete_at': 1794612539, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'repository': ['', 'Build'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'basedir': ['c:\\buildbot', 'Worker'], 'workername': ['windows', 'Worker'], 'codebase': ['', 'Build'], 'branch': ['refs/pull/15007/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'build_url': ['https://dl.dolphin-emu.org/prs/12/fe/pr-15007-dolphin-latest-dbg-x64.7z', 'SetProperty'], 'branchname': ['pr-15007', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'pr_id': [15007, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'buildnumber': [11035, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-dbg-x64', 'Worker']}, 'buildrequest': {'buildrequestid': 199382, 'buildsetid': 44542, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1794612197, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11035'}, 'type': 'raw_bb_hook'}
2026-11-13T23:23:18.204476 {'source': 'webserver', 'raw': {'buildid': 198691, 'number': 11035, 'builderid': 31, 'buildrequestid': 199382, 'workerid': 4, 'masterid': 1, 'started_at': 1794612197, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'repository': ['', 'Build'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'codebase': ['', 'Build'], 'branch': ['refs/pull/15007/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'branchname': ['pr-15007', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'pr_id': [15007, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'buildnumber': [11035, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 199382, 'buildsetid': 44542, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1794612197, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11035'}, 'type': 'raw_bb_hook'}
2026-11-13T23:23:18.037103 {'source': 'webserver', 'raw': {'buildid': 198687, 'number': 11027, 'builderid': 13, 'buildrequestid': 199378, 'workerid': 4, 'masterid': 1, 'started_at': 1794611681, 'complete_at': 1794612197, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'pr_id': [15007, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [13, 'Builder'], 'buildnumber': [11027, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['c:\\buildbot\\pr-win-arm64', 'Worker'], 'branchname': ['pr-15007', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-arm64', 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'build_url': ['https://dl.dolphin-emu.org/prs/4a/8a/pr-15007-dolphin-latest-arm64.7z', 'SetProperty']}, 'buildrequest': {'buildrequestid': 199378, 'buildsetid': 44542, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1794611681, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11027'}, 'type': 'raw_bb_hook'}
2026-11-13T23:21:58.346636 {'source': 'webserver', 'raw': {'buildid': 198685, 'number': 6175, 'builderid': 43, 'buildrequestid': 199383, 'workerid': 13, 'masterid': 1, 'started_at': 1794611252, 'complete_at': 1794612118, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Change'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'builderid': [43, 'Builder'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-x64', 'Worker'], 'buildername': ['pr-flatpak-x64', 'Builder'], 'branch': ['refs/pull/15007/head', 'Build'], 'workername': ['altair-flatpak', 'Worker'], 'codebase': ['', 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13646', 'SetPropertyFromCommand Step'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'pr_id': [15007, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [6175, 'Build']}, 'buildrequest': {'buildrequestid': 199383, 'buildsetid': 44542, 'builderid': 43, 'priority': 0, 'claimed': True, 'claimed_at': 1794611252, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/6175'}, 'type': 'raw_bb_hook'}
2026-11-13T23:21:55.170667 {'source': 'webserver', 'raw': {'buildid': 198684, 'number': 11033, 'builderid': 22, 'buildrequestid': 199379, 'workerid': 12, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794612115, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Change'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'repository': ['', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'pr_id': [15007, 'Change'], 'builddir': ['/buildbot/pr-android', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [22, 'Builder'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-android', 'Builder'], 'workername': ['android', 'Worker'], 'buildnumber': [11033, 'Build'], 'branch': ['refs/pull/15007/head', 'Build']}, 'buildrequest': {'buildrequestid': 199379, 'buildsetid': 44542, 'builderid': 22, 'priority': 0, 'claimed': True, 'claimed_at': 1794611251, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11033'}, 'type': 'raw_bb_hook'}
2026-11-13T23:21:17.004033 {'source': 'webserver', 'raw': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [27, 'Builder'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'buildnumber': [11027, 'Build'], 'repository': ['', 'Build'], 'builddir': ['/buildbot/pr-ubu-x64', 'Worker'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'shortrev': ['62e3ad', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-ubu-x64', 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'codebase': ['', 'Build'], 'branchname': ['pr-15007', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'pr_id': [15007, 'Change'], 'branch': ['refs/pull/15007/head', 'Build']}, 'buildrequest': {'buildrequestid': 199381, 'buildsetid': 44542, 'builderid': 27, 'priority': 0, 'claimed': True, 'claimed_at': 1794611256, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11027'}, 'type': 'raw_bb_hook'}
2026-11-13T23:21:15.613054 {'source': 'webserver', 'raw': {'buildid': 198690, 'number': 11026, 'builderid': 1, 'buildrequestid': 199373, 'workerid': 9, 'masterid': 1, 'started_at': 1794612075, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'pr_id': [15007, 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'branchname': ['pr-15007', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/15007/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'workername': ['debian', 'Worker'], 'codebase': ['', 'Build'], 'builderid': [1, 'Builder'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'buildnumber': [11026, 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 199373, 'buildsetid': 44542, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1794612075, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11026'}, 'type': 'raw_bb_hook'}
2026-11-13T23:21:15.389882 {'source': 'webserver', 'raw': {'buildid': 198680, 'number': 11025, 'builderid': 26, 'buildrequestid': 199380, 'workerid': 9, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794612075, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Change'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'basedir': ['/buildbot', 'Worker'], 'builderid': [26, 'Builder'], 'workername': ['debian', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/buildbot/pr-deb-x64', 'Worker'], 'shortrev': ['62e3ad', 'Change'], 'pr_id': [15007, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-deb-x64', 'Builder'], 'codebase': ['', 'Build'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'buildnumber': [11025, 'Build']}, 'buildrequest': {'buildrequestid': 199380, 'buildsetid': 44542, 'builderid': 26, 'priority': 0, 'claimed': True, 'claimed_at': 1794611251, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11025'}, 'type': 'raw_bb_hook'}
2026-11-13T23:21:14.650988 {'source': 'webserver', 'raw': {'buildid': 198678, 'number': 279, 'builderid': 49, 'buildrequestid': 199385, 'workerid': 15, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794612074, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-appimage-x64', 'Builder'], 'builderid': [49, 'Builder'], 'workername': ['altair-appimage', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'pr_id': [15007, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/buildbot/pr-appimage-x64', 'Worker'], 'warnings-count': [13, 'WarningCountingShellCommand'], 'buildnumber': [279, 'Build'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 199385, 'buildsetid': 44542, 'builderid': 49, 'priority': 0, 'claimed': True, 'claimed_at': 1794611251, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/279'}, 'type': 'raw_bb_hook'}
2026-11-13T23:21:12.427114 {'source': 'webserver', 'raw': {'buildid': 198689, 'number': 9671, 'builderid': 35, 'buildrequestid': 199390, 'workerid': 5, 'masterid': 1, 'started_at': 1794612035, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-15007', 'Trigger'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9671, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'buildername': ['pr-fifoci-sw-lin-mesa', 'Builder'], 'workername': ['altair-fifoci', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'codebase': ['', 'Build'], 'pr_id': [15007, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'repository': ['', 'Build'], 'builderid': [35, 'Builder']}, 'buildrequest': {'buildrequestid': 199390, 'buildsetid': 44545, 'builderid': 35, 'priority': 0, 'claimed': True, 'claimed_at': 1794612035, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794612035, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44545, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1794612035, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198686, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198686, 'number': 11027, 'builderid': 27, 'buildrequestid': 199381, 'workerid': 10, 'masterid': 1, 'started_at': 1794611256, 'complete_at': 1794612035, '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/9671'}, 'type': 'raw_bb_hook'}
2026-11-13T23:20:32.415972 {'source': 'webserver', 'raw': {'buildid': 198683, 'number': 11046, 'builderid': 7, 'buildrequestid': 199375, 'workerid': 8, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611987, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'codebase': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'builddir': ['/Users/ci/worker/base/pr-osx-universal', 'Worker'], 'shortrev': ['62e3ad', 'Change'], 'pr_id': [15007, 'Change'], 'buildername': ['pr-osx-universal', 'Builder'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'branchname': ['pr-15007', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'builderid': [7, 'Builder'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/15007/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'workername': ['osx-m1', 'Worker'], 'buildnumber': [11046, 'Build'], 'project': ['', 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 199375, 'buildsetid': 44542, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1794611251, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11046'}, 'type': 'raw_bb_hook'}
2026-11-13T23:20:27.685856 {'source': 'webserver', 'raw': {'buildid': 198688, 'number': 9349, 'builderid': 21, 'buildrequestid': 199388, 'workerid': 8, 'masterid': 1, 'started_at': 1794611987, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-15007', 'Trigger'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'shortrev': ['62e3ad', 'Trigger'], 'pr_id': [15007, 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'builderid': [21, 'Builder'], 'buildnumber': [9349, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'codebase': ['', 'Build'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 199388, 'buildsetid': 44544, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1794611987, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611987, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44544, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1794611987, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 198683, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': {'buildid': 198683, 'number': 11046, 'builderid': 7, 'buildrequestid': 199375, 'workerid': 8, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611987, '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/9349'}, 'type': 'raw_bb_hook'}
2026-11-13T23:20:16.638121 {'source': 'webserver', 'raw': {'buildid': 198682, 'number': 6119, 'builderid': 44, 'buildrequestid': 199384, 'workerid': 14, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794612016, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'pr_id': [15007, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-flatpak-arm64', 'Builder'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-arm64', 'Worker'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13645', 'SetPropertyFromCommand Step'], 'shortrev': ['62e3ad', 'Change'], 'builderid': [44, 'Builder'], 'workername': ['deneb-flatpak', 'Worker'], 'codebase': ['', 'Build'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'branchname': ['pr-15007', 'Change'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'buildnumber': [6119, 'Build'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/15007/head', 'Build'], 'project': ['', 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 199384, 'buildsetid': 44542, 'builderid': 44, 'priority': 0, 'claimed': True, 'claimed_at': 1794611251, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1794611251, 'complete_at': 1794612016, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/6119'}, 'type': 'raw_bb_hook'}
2026-11-13T23:18:31.798139 {'source': 'webserver', 'raw': {'buildid': 198679, 'number': 273, 'builderid': 50, 'buildrequestid': 199386, 'workerid': 16, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611911, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Change'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'pr_id': [15007, 'Change'], 'codebase': ['', 'Build'], 'builddir': ['/buildbot/pr-appimage-arm64', 'Worker'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-appimage-arm64', 'Builder'], 'workername': ['deneb-appimage', 'Worker'], 'buildnumber': [273, 'Build'], 'branch': ['refs/pull/15007/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'warnings-count': [12, 'WarningCountingShellCommand'], 'shortrev': ['62e3ad', 'Change'], 'project': ['', 'Build'], 'builderid': [50, 'Builder'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 199386, 'buildsetid': 44542, 'builderid': 50, 'priority': 0, 'claimed': True, 'claimed_at': 1794611251, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/273'}, 'type': 'raw_bb_hook'}
2026-11-13T23:14:41.789189 {'source': 'webserver', 'raw': {'buildid': 198687, 'number': 11027, 'builderid': 13, 'buildrequestid': 199378, 'workerid': 4, 'masterid': 1, 'started_at': 1794611681, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'pr_id': [15007, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [13, 'Builder'], 'buildnumber': [11027, 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-15007', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-arm64', 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/15007/head', 'Build']}, 'buildrequest': {'buildrequestid': 199378, 'buildsetid': 44542, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1794611681, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11027'}, 'type': 'raw_bb_hook'}
2026-11-13T23:14:41.672001 {'source': 'webserver', 'raw': {'buildid': 198677, 'number': 11028, 'builderid': 2, 'buildrequestid': 199374, 'workerid': 4, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611681, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Change'], 'pr_id': [15007, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-win-x64', 'Builder'], 'builderid': [2, 'Builder'], 'workername': ['windows', 'Worker'], 'buildnumber': [11028, 'Build'], 'branch': ['refs/pull/15007/head', 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-x64', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'repository': ['', 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'build_url': ['https://dl.dolphin-emu.org/prs/89/d3/pr-15007-dolphin-latest-x64.7z', 'SetProperty'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 199374, 'buildsetid': 44542, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1794611251, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, '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/11028'}, 'type': 'raw_bb_hook'}
2026-11-13T23:09:55.160170 {'source': 'webserver', 'raw': {'buildid': 198681, 'number': 11037, 'builderid': 11, 'buildrequestid': 199377, 'workerid': 1, 'masterid': 1, 'started_at': 1794611251, 'complete_at': 1794611394, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-15007', 'Change'], 'pr_id': [15007, 'Change'], 'builddir': ['/usr/home/buildbot/freebsd/pr-freebsd-x64', 'Worker'], 'got_revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'GitNoBranch'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/usr/home/buildbot/freebsd', 'Worker'], 'headrev': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Change'], 'shortrev': ['62e3ad', 'Change'], 'buildnumber': [11037, 'Build'], 'branch': ['refs/pull/15007/head', 'Build'], 'revision': ['62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'Build'], 'baserev': ['44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'Change'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-freebsd-x64', 'Builder'], 'builderid': [11, 'Builder'], 'workername': ['freebsd', 'Worker']}, 'buildrequest': {'buildrequestid': 199377, 'buildsetid': 44542, 'builderid': 11, 'priority': 0, 'claimed': True, 'claimed_at': 1794611251, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1794611251, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44542, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1794611251, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13376, 'branch': 'refs/pull/15007/head', 'revision': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1794611251, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 11, 'name': 'pr-freebsd-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/11/builds/11037'}, 'type': 'raw_bb_hook'}
Recent 'raw_gh_hook' events
2026-11-13T23:07:21.406830 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 15007, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15007', 'id': 5250918504, 'node_id': 'PR_kwDOALCn2M8AAAABOPqoaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15007', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15007.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15007.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15007', 'number': 15007, 'state': 'open', 'locked': False, 'title': 'HW/WiimoteReal: Simplify the IsBalanceBoard check and hopefully make it more reliable.', '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 is an attempt to fix https://bugs.dolphin-emu.org/issues/14144\r\nEdit: User confirmed this fixes the issue.\r\n\r\n`IsBalanceBoard` is used to identify Wii Remotes from Balance Boards when the Bluetooth name isn't provided to us (when using DolphinBar or hidapi).\r\n\r\nThe existing `IsBalanceBoard` function attempted to initialize and read the identifier of the Balance Board pseudo-extension.\r\nThat required sending and waiting for the replies of four reports.\r\n\r\nI've made it now just send one report which attempts to write a disabling byte to the speaker hardware.\r\nThe speaker hardware isn't present on Balance Boards so this will produce a NACK.\r\n\r\nI've also made it time out after 1 second.", 'created_at': '2026-11-10T23:42:28Z', 'updated_at': '2026-11-13T23:07:19Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'e5e2ed5b60888587a762b3f0961b8ec8938f85ee', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15007/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15007/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/15007/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/62e3ad90f3c4dae36b686f50c7d185c9180e106c', 'head': {'label': 'jordan-woyak:is-balance-board-simple-test', 'ref': 'is-balance-board-simple-test', 'sha': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', '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}, 'repo': {'id': 16818408, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNjgxODQwOA==', 'name': 'dolphin', 'full_name': 'jordan-woyak/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/jordan-woyak/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/jordan-woyak/dolphin', 'forks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/forks', 'keys_url': 'https://api.github.com/repos/jordan-woyak/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/jordan-woyak/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/jordan-woyak/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/events', 'assignees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/jordan-woyak/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/jordan-woyak/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/jordan-woyak/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/jordan-woyak/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/jordan-woyak/dolphin/merges', 'archive_url': 'https://api.github.com/repos/jordan-woyak/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/jordan-woyak/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/jordan-woyak/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/jordan-woyak/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/jordan-woyak/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/jordan-woyak/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/jordan-woyak/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/deployments', 'created_at': '2014-02-13T21:50:38Z', 'updated_at': '2026-06-27T21:22:47Z', 'pushed_at': '2026-11-13T23:07:18Z', 'git_url': 'git://github.com/jordan-woyak/dolphin.git', 'ssh_url': 'git@github.com:jordan-woyak/dolphin.git', 'clone_url': 'https://github.com/jordan-woyak/dolphin.git', 'svn_url': 'https://github.com/jordan-woyak/dolphin', 'homepage': None, 'size': 530540, 'stargazers_count': 5, 'watchers_count': 5, 'language': 'C++', 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': False, 'has_pages': False, 'has_discussions': False, 'forks_count': 5, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 2, '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': 5, 'open_issues': 2, 'watchers': 5, 'default_branch': 'master', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': True, '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': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', '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-13T22:08:30Z', 'pushed_at': '2026-11-13T22:08: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': 563847, 'stargazers_count': 15820, 'watchers_count': 15820, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3387, 'open_issues': 488, 'watchers': 15820, '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/15007'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15007'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15007'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15007/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15007/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/15007/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/62e3ad90f3c4dae36b686f50c7d185c9180e106c'}}, 'author_association': 'MEMBER', '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': 2, 'additions': 48, 'deletions': 81, 'changed_files': 4}, 'before': '0df3d6d48ef6a35b3f791900083fb654087da0f5', 'after': '62e3ad90f3c4dae36b686f50c7d185c9180e106c', '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-13T22:08:30Z', 'pushed_at': '2026-11-13T22:08: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': 563847, 'stargazers_count': 15820, 'watchers_count': 15820, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3387, 'open_issues': 488, 'watchers': 15820, '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-13T23:04:56.873127 {'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': 4, 'created_at': '2026-11-07T01:23:58Z', 'updated_at': '2026-11-13T23:04:54Z', '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/6867139863', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14991#issuecomment-6867139863', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14991', 'id': 6867139863, 'node_id': 'IC_kwDOALCn2M8AAAABmVA9Fw', '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-13T23:04:54Z', 'updated_at': '2026-11-13T23:04:54Z', 'body': 'It sounds like this PR can be closed in favor of #15013 and #15021 ?', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6867139863/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-13T22:08:30Z', 'pushed_at': '2026-11-13T22:08: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': 563847, 'stargazers_count': 15820, 'watchers_count': 15820, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3387, 'open_issues': 488, 'watchers': 15820, '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-13T22:08:07.979721 {'source': 'webserver', 'gh_type': 'check_suite', 'raw': {'action': 'requested', 'check_suite': {'id': 117836006489, 'node_id': 'CS_kwDOALCn2M8AAAAbb5LEWQ', 'head_branch': 'master', 'head_sha': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/check-suites/117836006489', 'before': '5c496d1838a20660590fece1edfdf58148f80a60', 'after': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'pull_requests': [{'url': 'https://api.github.com/repos/Faster-Brawl/dolphin/pulls/5', 'id': 1222541325, 'number': 5, 'head': {'ref': 'master', 'sha': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'repo': {'id': 11577304, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'name': 'dolphin'}}, 'base': {'ref': 'master', 'sha': 'eb9e232680dfdc04ec2adab05dbc530b1e707fc9', 'repo': {'id': 577809188, 'url': 'https://api.github.com/repos/Faster-Brawl/dolphin', 'name': 'dolphin'}}}, {'url': 'https://api.github.com/repos/dirextric-auto/dolphin/pulls/1', 'id': 571486662, 'number': 1, 'head': {'ref': 'master', 'sha': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'repo': {'id': 11577304, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'name': 'dolphin'}}, 'base': {'ref': 'master', 'sha': '1e71904cb9930eccc036e2ce2360beaa746befa7', 'repo': {'id': 337848960, 'url': 'https://api.github.com/repos/dirextric-auto/dolphin', 'name': 'dolphin'}}}, {'url': 'https://api.github.com/repos/zurgeg/dolphin-vr-no-ovr/pulls/1', 'id': 518053317, 'number': 1, 'head': {'ref': 'master', 'sha': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'repo': {'id': 11577304, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'name': 'dolphin'}}, 'base': {'ref': 'VR-Hydra', 'sha': 'ea9f95955e5335cc238b2f9c5a0a6dfdc8698aec', 'repo': {'id': 311469400, 'url': 'https://api.github.com/repos/zurgeg/dolphin-vr-no-ovr', 'name': 'dolphin-vr-no-ovr'}}}, {'url': 'https://api.github.com/repos/weihuoya/dolphin/pulls/1', 'id': 400884538, 'number': 1, 'head': {'ref': 'master', 'sha': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'repo': {'id': 11577304, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'name': 'dolphin'}}, 'base': {'ref': 'master', 'sha': '0f4c971326ae9389b3ad55b0fefacb708d148f4d', 'repo': {'id': 143011855, 'url': 'https://api.github.com/repos/weihuoya/dolphin', 'name': 'dolphin'}}}], '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-13T22:08:06Z', 'updated_at': '2026-11-13T22:08:06Z', 'rerequestable': True, 'runs_rerequestable': True, 'latest_check_runs_count': 0, 'check_runs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/check-suites/117836006489/check-runs', 'head_commit': {'id': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'tree_id': '5cc96c3176c264ff50051f2c013d41f162cd9bce', 'message': 'Merge pull request #15022 from hamidzr/fixtypos\n\nFix typos in documentation', 'timestamp': '2026-11-13T22:08:03Z', 'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com'}}}, '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-13T22:01:27Z', 'pushed_at': '2026-11-13T22:08: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': 563847, 'stargazers_count': 15821, 'watchers_count': 15821, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3387, 'open_issues': 488, 'watchers': 15821, '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-13T22:08:06.794455 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'closed', 'number': 15022, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022', 'id': 5302779776, 'node_id': 'PR_kwDOALCn2M8AAAABPBH_gA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15022', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15022.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15022.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022', 'number': 15022, 'state': 'closed', 'locked': False, 'title': 'Fix typos in documentation', 'user': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'created_at': '2026-11-13T21:01:12Z', 'updated_at': '2026-11-13T22:08:04Z', 'closed_at': '2026-11-13T22:08:04Z', 'merged_at': '2026-11-13T22:08:04Z', 'merge_commit_sha': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/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/15022/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'head': {'label': 'hamidzr:fixtypos', 'ref': 'fixtypos', 'sha': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'user': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1457095596, 'node_id': 'R_kgDOVtmDrA', 'name': 'dolphin', 'full_name': 'hamidzr/dolphin', 'private': False, 'owner': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/hamidzr/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/hamidzr/dolphin', 'forks_url': 'https://api.github.com/repos/hamidzr/dolphin/forks', 'keys_url': 'https://api.github.com/repos/hamidzr/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/hamidzr/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/hamidzr/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/hamidzr/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/hamidzr/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/hamidzr/dolphin/events', 'assignees_url': 'https://api.github.com/repos/hamidzr/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/hamidzr/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/hamidzr/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/hamidzr/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/hamidzr/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/hamidzr/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/hamidzr/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/hamidzr/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/hamidzr/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/hamidzr/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/hamidzr/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/hamidzr/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/hamidzr/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/hamidzr/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/hamidzr/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/hamidzr/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/hamidzr/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/hamidzr/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/hamidzr/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/hamidzr/dolphin/merges', 'archive_url': 'https://api.github.com/repos/hamidzr/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/hamidzr/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/hamidzr/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/hamidzr/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/hamidzr/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/hamidzr/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/hamidzr/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/hamidzr/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/hamidzr/dolphin/deployments', 'created_at': '2026-11-13T21:01:08Z', 'updated_at': '2026-11-13T21:01:08Z', 'pushed_at': '2026-11-13T21:01:11Z', 'git_url': 'git://github.com/hamidzr/dolphin.git', 'ssh_url': 'git@github.com:hamidzr/dolphin.git', 'clone_url': 'https://github.com/hamidzr/dolphin.git', 'svn_url': 'https://github.com/hamidzr/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 520893, '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': '5c496d1838a20660590fece1edfdf58148f80a60', '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-13T22:01:27Z', 'pushed_at': '2026-11-13T22:08: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': 563847, 'stargazers_count': 15821, 'watchers_count': 15821, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3387, 'open_issues': 488, 'watchers': 15821, '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/15022'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15022'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/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/15022/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c1e405f03043ac70020a3527e7e14ff6c41c0d10'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': True, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': {'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}, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': False, 'commits': 1, 'additions': 6, 'deletions': 6, 'changed_files': 2}, '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-13T22:01:27Z', 'pushed_at': '2026-11-13T22:08: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': 563847, 'stargazers_count': 15821, 'watchers_count': 15821, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3387, 'open_issues': 488, 'watchers': 15821, '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-13T22:08:06.396639 {'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/master', 'before': '5c496d1838a20660590fece1edfdf58148f80a60', 'after': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', '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-13T22:01:27Z', 'pushed_at': 1794607683, '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': 563847, 'stargazers_count': 15821, 'watchers_count': 15821, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3387, 'open_issues': 488, 'watchers': 15821, 'default_branch': 'master', 'stargazers': 15821, 'master_branch': 'master', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'jordan-woyak', 'email': 'jordan.woyak@gmail.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': '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': False, 'deleted': False, 'base_ref': None, 'compare': 'https://github.com/dolphin-emu/dolphin/compare/5c496d1838a2...44e0c5663af1', 'commits': [{'id': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'tree_id': '5cc96c3176c264ff50051f2c013d41f162cd9bce', 'distinct': False, 'message': 'Fix typos in documentation\n\nSigned-off-by: Hamid Zare <12127420+hamidzr@users.noreply.github.com>', 'timestamp': '2026-11-13T15:01:11-06:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'author': {'name': 'Hamid Zare', 'email': '12127420+hamidzr@users.noreply.github.com', 'date': '2026-11-13T15:01:11-06:00', 'username': 'hamidzr'}, 'committer': {'name': 'Hamid Zare', 'email': '12127420+hamidzr@users.noreply.github.com', 'date': '2026-11-13T15:01:11-06:00', 'username': 'hamidzr'}, 'added': [], 'removed': [], 'modified': ['docs/CustomPipelineGraphicsMod.md', 'docs/ResourcePacks.md']}, {'id': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'tree_id': '5cc96c3176c264ff50051f2c013d41f162cd9bce', 'distinct': True, 'message': 'Merge pull request #15022 from hamidzr/fixtypos\n\nFix typos in documentation', 'timestamp': '2026-11-13T16:08:03-06:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-13T16:08:03-06:00', 'username': 'jordan-woyak'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com', 'date': '2026-11-13T16:08:03-06:00', 'username': 'web-flow'}, 'added': [], 'removed': [], 'modified': ['docs/CustomPipelineGraphicsMod.md', 'docs/ResourcePacks.md']}], 'head_commit': {'id': '44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'tree_id': '5cc96c3176c264ff50051f2c013d41f162cd9bce', 'distinct': True, 'message': 'Merge pull request #15022 from hamidzr/fixtypos\n\nFix typos in documentation', 'timestamp': '2026-11-13T16:08:03-06:00', 'url': 'https://github.com/dolphin-emu/dolphin/commit/44e0c5663af1b37f71bad7fb73281f4d0677bd51', 'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-13T16:08:03-06:00', 'username': 'jordan-woyak'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com', 'date': '2026-11-13T16:08:03-06:00', 'username': 'web-flow'}, 'added': [], 'removed': [], 'modified': ['docs/CustomPipelineGraphicsMod.md', 'docs/ResourcePacks.md']}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-13T21:47:56.137789 {'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'completed', 'check_run': {'id': 132190317558, 'name': 'build-flake', 'node_id': 'CR_kwDOCriaAc8AAAAexygr9g', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'external_id': 'a92940cc-0d0c-590b-8cac-5a01875b1cb1', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132190317558', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513764969/job/132190317558', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513764969/job/132190317558', 'status': 'completed', 'conclusion': 'success', 'started_at': '2026-11-13T21:47:17Z', 'completed_at': '2026-11-13T21:47:53Z', 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 2, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132190317558/annotations'}, 'check_suite': {'id': 117828085399, 'node_id': 'CS_kwDOCriaAc8AAAAbbxnmlw', 'head_branch': 'dependabot/uv/tornado-6.6.1', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'status': 'completed', 'conclusion': 'success', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/117828085399', 'before': '0000000000000000000000000000000000000000', 'after': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-13T21:47:14Z', 'updated_at': '2026-11-13T21:47:54Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}]}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:21Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:44.693003 {'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'completed', 'check_run': {'id': 132190317584, 'name': 'run-tests', 'node_id': 'CR_kwDOCriaAc8AAAAexygsEA', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'external_id': '07f8cc57-8706-576b-9bbe-197c92e23bb2', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132190317584', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513764973/job/132190317584', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513764973/job/132190317584', 'status': 'completed', 'conclusion': 'success', 'started_at': '2026-11-13T21:47:17Z', 'completed_at': '2026-11-13T21:47:43Z', 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 2, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132190317584/annotations'}, 'check_suite': {'id': 117828085421, 'node_id': 'CS_kwDOCriaAc8AAAAbbxnmrQ', 'head_branch': 'dependabot/uv/tornado-6.6.1', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'status': 'completed', 'conclusion': 'success', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/117828085421', 'before': '0000000000000000000000000000000000000000', 'after': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-13T21:47:14Z', 'updated_at': '2026-11-13T21:47:43Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}]}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:21Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:22.315203 {'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/dependabot/uv/tornado-6.6', 'before': '2348b731e93570120a09671f57d82497700b0661', 'after': '0000000000000000000000000000000000000000', 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': 1554574662, 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': 1794606441, 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'stargazers': 14, 'master_branch': 'master', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'dependabot[bot]', 'email': None}, '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': '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': False, 'deleted': True, 'base_ref': None, 'compare': 'https://github.com/dolphin-emu/netplay-index/compare/2348b731e935...000000000000', 'commits': [], 'head_commit': None, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-13T21:47:20.849752 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'closed', 'number': 18, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'node_id': 'PR_kwDOCriaAc8AAAABMvbvuw', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18', 'number': 18, 'state': 'closed', 'locked': False, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/e2b0f452bbf0e554c64e9d9ee922341c1c634d95"><code>e2b0f45</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3831">#3831</a> from bdarnell/final-6.6</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/90c4e3fd2c91a75a8e89a5cddd2caff803c4d361"><code>90c4e3f</code></a> Version bump for 6.6 final release</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ec17353e8c84ef20fe17eab4def51404ac56cbd8"><code>ec17353</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3828">#3828</a> from bdarnell/downstream-ci-66</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/15f66b043c5f1b69eff4088e90ee12b380d0d189"><code>15f66b0</code></a> ci: Add explicit read permission to CI jobs</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/444644112142d7033ffcae1b37e21f0a2cf024b2"><code>4446441</code></a> ci: Run the downstream testbed on a wheel built in the same run</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2e24d28a59433a41d77450b578f6be6028bad89"><code>c2e24d2</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3823">#3823</a> from bdarnell/claude/project-thread-uzh2s8</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2d8884b64c5131bc26ac0919cfcdb752784ba78"><code>c2d8884</code></a> test: Add pre-6.3 security fixes to the corpus</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/de32687e664d37fe35dd931e8f56bcfcb9b27ac5"><code>de32687</code></a> test: Add a regression corpus of past security fixes</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7848790399e6bdc272fc83d200345850f35de551"><code>7848790</code></a> maint: Add pre-tag checks and release instructions</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/f14321e4a07395b2f808afb66fc8d78f9c078829"><code>f14321e</code></a> ci: Compare benchmarks with the base branch on every PR</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.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/netplay-index/network/alerts).\n\n</details>', 'created_at': '2026-11-04T06:31:59Z', 'updated_at': '2026-11-13T21:47:18Z', 'closed_at': '2026-11-13T21:47:17Z', 'merged_at': None, 'merge_commit_sha': 'a39946e6fd005643e18159e8ad8ee942cadeb338', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/2348b731e93570120a09671f57d82497700b0661', 'head': {'label': 'dolphin-emu:dependabot/uv/tornado-6.6', 'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', '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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, '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': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', '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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, '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'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18'}, 'html': {'href': 'https://github.com/dolphin-emu/netplay-index/pull/18'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/2348b731e93570120a09671f57d82497700b0661'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'clean', 'merged_by': None, 'comments': 1, 'review_comments': 0, 'maintainer_can_modify': False, 'commits': 1, 'additions': 19, 'deletions': 14, 'changed_files': 1}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:18.840151 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18', 'repository_url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/events', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'id': 6197696157, 'node_id': 'PR_kwDOCriaAc8AAAABMvbvuw', 'number': 18, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/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-11-04T06:31:59Z', 'updated_at': '2026-11-13T21:47:16Z', '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/netplay-index/pulls/18', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.patch', 'merged_at': None}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/e2b0f452bbf0e554c64e9d9ee922341c1c634d95"><code>e2b0f45</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3831">#3831</a> from bdarnell/final-6.6</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/90c4e3fd2c91a75a8e89a5cddd2caff803c4d361"><code>90c4e3f</code></a> Version bump for 6.6 final release</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ec17353e8c84ef20fe17eab4def51404ac56cbd8"><code>ec17353</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3828">#3828</a> from bdarnell/downstream-ci-66</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/15f66b043c5f1b69eff4088e90ee12b380d0d189"><code>15f66b0</code></a> ci: Add explicit read permission to CI jobs</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/444644112142d7033ffcae1b37e21f0a2cf024b2"><code>4446441</code></a> ci: Run the downstream testbed on a wheel built in the same run</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2e24d28a59433a41d77450b578f6be6028bad89"><code>c2e24d2</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3823">#3823</a> from bdarnell/claude/project-thread-uzh2s8</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2d8884b64c5131bc26ac0919cfcdb752784ba78"><code>c2d8884</code></a> test: Add pre-6.3 security fixes to the corpus</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/de32687e664d37fe35dd931e8f56bcfcb9b27ac5"><code>de32687</code></a> test: Add a regression corpus of past security fixes</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7848790399e6bdc272fc83d200345850f35de551"><code>7848790</code></a> maint: Add pre-tag checks and release instructions</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/f14321e4a07395b2f808afb66fc8d78f9c078829"><code>f14321e</code></a> ci: Compare benchmarks with the base branch on every PR</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.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/netplay-index/network/alerts).\n\n</details>', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/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/netplay-index/issues/18/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments/6865726417', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18#issuecomment-6865726417', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18', 'id': 6865726417, 'node_id': 'IC_kwDOCriaAc8AAAABmTqr0Q', '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-13T21:47:15Z', 'updated_at': '2026-11-13T21:47:15Z', 'body': 'Superseded by #20.', 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments/6865726417/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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:18.168975 {'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'created', 'check_run': {'id': 132190317584, 'name': 'run-tests', 'node_id': 'CR_kwDOCriaAc8AAAAexygsEA', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'external_id': '07f8cc57-8706-576b-9bbe-197c92e23bb2', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132190317584', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513764973/job/132190317584', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513764973/job/132190317584', 'status': 'queued', 'conclusion': None, 'started_at': '2026-11-13T21:47:15Z', 'completed_at': None, 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 0, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132190317584/annotations'}, 'check_suite': {'id': 117828085421, 'node_id': 'CS_kwDOCriaAc8AAAAbbxnmrQ', 'head_branch': 'dependabot/uv/tornado-6.6.1', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/117828085421', 'before': '0000000000000000000000000000000000000000', 'after': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-13T21:47:14Z', 'updated_at': '2026-11-13T21:47:14Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}]}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:17.209676 {'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'created', 'check_run': {'id': 132190317558, 'name': 'build-flake', 'node_id': 'CR_kwDOCriaAc8AAAAexygr9g', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'external_id': 'a92940cc-0d0c-590b-8cac-5a01875b1cb1', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132190317558', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513764969/job/132190317558', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513764969/job/132190317558', 'status': 'queued', 'conclusion': None, 'started_at': '2026-11-13T21:47:15Z', 'completed_at': None, 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 0, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132190317558/annotations'}, 'check_suite': {'id': 117828085399, 'node_id': 'CS_kwDOCriaAc8AAAAbbxnmlw', 'head_branch': 'dependabot/uv/tornado-6.6.1', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/117828085399', 'before': '0000000000000000000000000000000000000000', 'after': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-13T21:47:14Z', 'updated_at': '2026-11-13T21:47:14Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}]}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:14.925629 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'labeled', 'number': 20, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'node_id': 'PR_kwDOCriaAc8AAAABPBqYFA', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/20', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/20.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/20.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20', 'number': 20, 'state': 'open', 'locked': False, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6.1', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.1.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.1\nreleases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c1adc39faea87d87d99421529aa06cdd3d39f660"><code>c1adc39</code></a> docs: Fill in release date</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/25c37dd7371d1ef227ba554627e62e269846ce1b"><code>25c37dd</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3876">#3876</a> from bdarnell/fixes-661</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/cc22b6667bbabe1134638994147e09dbf24280c3"><code>cc22b66</code></a> Version bump for 6.6.1</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/eb44b951f9d47f75a43976d337839cf74e3aa538"><code>eb44b95</code></a> Release notes for Tornado 6.6.1</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/1427d8e64c194acb1df1d286d98c7e960b3f3fba"><code>1427d8e</code></a> test: Fix flaky cookie unquoting linear-performance test on PyPy</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/a4dd782104176cc13b80a7e0e113b680db4d9597"><code>a4dd782</code></a> httputil: Adjust schedule for removal of LF-only line endings</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/d0c945a20c0eed2ac502be678403ab6d56ececa2"><code>d0c945a</code></a> web: Reject NTFS alternate data streams in StaticFileHandler</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7e841ab94565ac95885d353ccb759666ba180865"><code>7e841ab</code></a> http1connection: Only allow HTTP whitespace in Content-Length lists</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/21e1ad0082b0a460c9fa063aacb9d164e26361cb"><code>21e1ad0</code></a> web: Don\'t let addslash and removeslash redirect to another host</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c503241622c0efe7c40110d89834ce8b7fead1e4"><code>c503241</code></a> web: Fix RedirectHandler open redirect with three or more leading slashes</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.1">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/netplay-index/network/alerts).\n\n</details>', 'created_at': '2026-11-13T21:47:09Z', 'updated_at': '2026-11-13T21:47:12Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/1a00a607e216319ad66331ba4a6a50627c6d9715', 'head': {'label': 'dolphin-emu:dependabot/uv/tornado-6.6.1', 'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', '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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, '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': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', '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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, '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'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20'}, 'html': {'href': 'https://github.com/dolphin-emu/netplay-index/pull/20'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/1a00a607e216319ad66331ba4a6a50627c6d9715'}}, 'author_association': 'CONTRIBUTOR', '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': False, 'commits': 1, 'additions': 19, 'deletions': 14, 'changed_files': 1}, 'label': {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:14.582982 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'labeled', 'number': 20, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'node_id': 'PR_kwDOCriaAc8AAAABPBqYFA', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/20', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/20.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/20.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20', 'number': 20, 'state': 'open', 'locked': False, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6.1', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.1.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.1\nreleases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c1adc39faea87d87d99421529aa06cdd3d39f660"><code>c1adc39</code></a> docs: Fill in release date</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/25c37dd7371d1ef227ba554627e62e269846ce1b"><code>25c37dd</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3876">#3876</a> from bdarnell/fixes-661</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/cc22b6667bbabe1134638994147e09dbf24280c3"><code>cc22b66</code></a> Version bump for 6.6.1</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/eb44b951f9d47f75a43976d337839cf74e3aa538"><code>eb44b95</code></a> Release notes for Tornado 6.6.1</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/1427d8e64c194acb1df1d286d98c7e960b3f3fba"><code>1427d8e</code></a> test: Fix flaky cookie unquoting linear-performance test on PyPy</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/a4dd782104176cc13b80a7e0e113b680db4d9597"><code>a4dd782</code></a> httputil: Adjust schedule for removal of LF-only line endings</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/d0c945a20c0eed2ac502be678403ab6d56ececa2"><code>d0c945a</code></a> web: Reject NTFS alternate data streams in StaticFileHandler</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7e841ab94565ac95885d353ccb759666ba180865"><code>7e841ab</code></a> http1connection: Only allow HTTP whitespace in Content-Length lists</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/21e1ad0082b0a460c9fa063aacb9d164e26361cb"><code>21e1ad0</code></a> web: Don\'t let addslash and removeslash redirect to another host</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c503241622c0efe7c40110d89834ce8b7fead1e4"><code>c503241</code></a> web: Fix RedirectHandler open redirect with three or more leading slashes</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.1">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/netplay-index/network/alerts).\n\n</details>', 'created_at': '2026-11-13T21:47:09Z', 'updated_at': '2026-11-13T21:47:12Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/1a00a607e216319ad66331ba4a6a50627c6d9715', 'head': {'label': 'dolphin-emu:dependabot/uv/tornado-6.6.1', 'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', '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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, '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': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', '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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, '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'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20'}, 'html': {'href': 'https://github.com/dolphin-emu/netplay-index/pull/20'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/1a00a607e216319ad66331ba4a6a50627c6d9715'}}, 'author_association': 'CONTRIBUTOR', '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': False, 'commits': 1, 'additions': 19, 'deletions': 14, 'changed_files': 1}, 'label': {'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:12.526982 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 20, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'node_id': 'PR_kwDOCriaAc8AAAABPBqYFA', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/20', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/20.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/20.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20', 'number': 20, 'state': 'open', 'locked': False, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6.1', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.1.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.1\nreleases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c1adc39faea87d87d99421529aa06cdd3d39f660"><code>c1adc39</code></a> docs: Fill in release date</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/25c37dd7371d1ef227ba554627e62e269846ce1b"><code>25c37dd</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3876">#3876</a> from bdarnell/fixes-661</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/cc22b6667bbabe1134638994147e09dbf24280c3"><code>cc22b66</code></a> Version bump for 6.6.1</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/eb44b951f9d47f75a43976d337839cf74e3aa538"><code>eb44b95</code></a> Release notes for Tornado 6.6.1</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/1427d8e64c194acb1df1d286d98c7e960b3f3fba"><code>1427d8e</code></a> test: Fix flaky cookie unquoting linear-performance test on PyPy</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/a4dd782104176cc13b80a7e0e113b680db4d9597"><code>a4dd782</code></a> httputil: Adjust schedule for removal of LF-only line endings</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/d0c945a20c0eed2ac502be678403ab6d56ececa2"><code>d0c945a</code></a> web: Reject NTFS alternate data streams in StaticFileHandler</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7e841ab94565ac95885d353ccb759666ba180865"><code>7e841ab</code></a> http1connection: Only allow HTTP whitespace in Content-Length lists</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/21e1ad0082b0a460c9fa063aacb9d164e26361cb"><code>21e1ad0</code></a> web: Don\'t let addslash and removeslash redirect to another host</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c503241622c0efe7c40110d89834ce8b7fead1e4"><code>c503241</code></a> web: Fix RedirectHandler open redirect with three or more leading slashes</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.1">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/netplay-index/network/alerts).\n\n</details>', 'created_at': '2026-11-13T21:47:09Z', 'updated_at': '2026-11-13T21:47:10Z', '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/netplay-index/pulls/20/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/1a00a607e216319ad66331ba4a6a50627c6d9715', 'head': {'label': 'dolphin-emu:dependabot/uv/tornado-6.6.1', 'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', '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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, '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': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', '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': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, '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'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20'}, 'html': {'href': 'https://github.com/dolphin-emu/netplay-index/pull/20'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/20/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/1a00a607e216319ad66331ba4a6a50627c6d9715'}}, 'author_association': 'CONTRIBUTOR', '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': False, 'commits': 1, 'additions': 19, 'deletions': 14, 'changed_files': 1}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:11.020478 {'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'completed', 'check_run': {'id': 132189825468, 'name': 'Dependabot', 'node_id': 'CR_kwDOCriaAc8AAAAexyCpvA', 'head_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'external_id': '1e71ad7d-fa76-5f47-b996-2fc02573c7d0', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132189825468', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513618534/job/132189825468', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513618534/job/132189825468', 'status': 'completed', 'conclusion': 'success', 'started_at': '2026-11-13T21:46:17Z', 'completed_at': '2026-11-13T21:47:09Z', 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 1, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132189825468/annotations'}, 'check_suite': {'id': 117827696928, 'node_id': 'CS_kwDOCriaAc8AAAAbbxP5IA', 'head_branch': 'master', 'head_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'status': 'completed', 'conclusion': 'success', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/117827696928', 'before': '67376c4c5834e737eb1e256cf783ce5e12cb4f63', 'after': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'pull_requests': [], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-13T21:46:14Z', 'updated_at': '2026-11-13T21:47:09Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': []}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, '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-13T21:47:10.492938 {'source': 'webserver', 'gh_type': 'check_suite', 'raw': {'action': 'requested', 'check_suite': {'id': 117828049391, 'node_id': 'CS_kwDOCriaAc8AAAAbbxlZ7w', 'head_branch': 'dependabot/uv/tornado-6.6.1', 'head_sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/117828049391', 'before': '0000000000000000000000000000000000000000', 'after': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/20', 'id': 5303343124, 'number': 20, 'head': {'ref': 'dependabot/uv/tornado-6.6.1', 'sha': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], '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-13T21:47:09Z', 'updated_at': '2026-11-13T21:47:09Z', 'rerequestable': True, 'runs_rerequestable': True, 'latest_check_runs_count': 0, 'check_runs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/117828049391/check-runs', 'head_commit': {'id': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'tree_id': '339924c599996b9e7932c3a6e0e0c460e38a7c95', 'message': 'build(deps): bump tornado from 6.5.8 to 6.6.1\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.1.\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.1)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n dependency-version: 6.6.1\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'timestamp': '2026-11-13T21:47:06Z', 'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com'}}}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T21:47:07Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 9, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 9, 'watchers': 14, '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': 'raw_gh_hook'}
2026-11-13T21:47:09.419477 {'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/dependabot/uv/tornado-6.6.1', 'before': '0000000000000000000000000000000000000000', 'after': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': 1554574662, 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': 1794606427, 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'stargazers': 14, 'master_branch': 'master', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'dependabot[bot]', 'email': None}, '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': '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': True, 'deleted': False, 'base_ref': None, 'compare': 'https://github.com/dolphin-emu/netplay-index/commit/1a00a607e216', 'commits': [{'id': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'tree_id': '339924c599996b9e7932c3a6e0e0c460e38a7c95', 'distinct': True, 'message': 'build(deps): bump tornado from 6.5.8 to 6.6.1\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.1.\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.1)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n dependency-version: 6.6.1\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'timestamp': '2026-11-13T21:47:06Z', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/1a00a607e216319ad66331ba4a6a50627c6d9715', 'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-13T21:47:06Z', 'username': 'dependabot[bot]'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com', 'date': '2026-11-13T21:47:06Z', 'username': 'web-flow'}, 'added': [], 'removed': [], 'modified': ['uv.lock']}], 'head_commit': {'id': '1a00a607e216319ad66331ba4a6a50627c6d9715', 'tree_id': '339924c599996b9e7932c3a6e0e0c460e38a7c95', 'distinct': True, 'message': 'build(deps): bump tornado from 6.5.8 to 6.6.1\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.1.\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.1)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n dependency-version: 6.6.1\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>', 'timestamp': '2026-11-13T21:47:06Z', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/1a00a607e216319ad66331ba4a6a50627c6d9715', 'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-13T21:47:06Z', 'username': 'dependabot[bot]'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com', 'date': '2026-11-13T21:47:06Z', 'username': 'web-flow'}, 'added': [], 'removed': [], 'modified': ['uv.lock']}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-13T21:46:18.372144 {'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'created', 'check_run': {'id': 132189825468, 'name': 'Dependabot', 'node_id': 'CR_kwDOCriaAc8AAAAexyCpvA', 'head_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'external_id': '1e71ad7d-fa76-5f47-b996-2fc02573c7d0', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132189825468', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513618534/job/132189825468', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/43513618534/job/132189825468', 'status': 'queued', 'conclusion': None, 'started_at': '2026-11-13T21:46:15Z', 'completed_at': None, 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 0, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/132189825468/annotations'}, 'check_suite': {'id': 117827696928, 'node_id': 'CS_kwDOCriaAc8AAAAbbxP5IA', 'head_branch': 'master', 'head_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/117827696928', 'before': '67376c4c5834e737eb1e256cf783ce5e12cb4f63', 'after': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'pull_requests': [], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-13T21:46:14Z', 'updated_at': '2026-11-13T21:46:14Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', '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': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': []}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', '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/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-13T14:50:37Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3964, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, '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-13T21:41:36.256376 {'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5898441889, 'node_id': 'PRR_kwDOALCn2M8AAAABX5MUoQ', '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': 'LGTM. Untested.', 'commit_id': 'c0041900c3b578aa64db5a1dff2bac5894d8d377', 'state': 'approved', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15021#pullrequestreview-5898441889', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15021', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15021#pullrequestreview-5898441889'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15021'}}, 'submitted_at': '2026-11-13T21:41:34Z', 'updated_at': '2026-11-13T21:41:34Z', 'author_association': 'CONTRIBUTOR'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15021', 'id': 5302185900, 'node_id': 'PR_kwDOALCn2M8AAAABPAjvrA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15021', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15021.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15021.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15021', 'number': 15021, 'state': 'open', 'locked': False, 'title': 'VideoCommon/OGL: Detect modern Intel Mesa driver (iris/crocus)', '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}, 'body': 'Split from #15013 as requested during review.\n\nUnder `case DriverDetails::VENDOR_MESA:` in `OGLConfig.cpp`, `InitDriverInfo()` currently only checks `svendor == "Intel Open Source Technology Center"` (used by the legacy `i965` driver). Modern Gallium-based Intel drivers in Mesa (`iris` and `crocus`) report `GL_VENDOR` as `"Intel"`, leaving `driver` as `DRIVER_UNKNOWN`.\n\nRather than mapping `"Intel"` to `DRIVER_I965` (which also carries legacy workarounds like `BUG_BROKEN_CLIP_DISTANCE`), this PR:\n1. Adds `DriverDetails::DRIVER_IRIS` to `DriverDetails.h` (and `to_string` in `DriverDetails.cpp`).\n2. Maps `svendor == "Intel"` under `VENDOR_MESA` to `DRIVER_IRIS` in `OGLConfig.cpp`.\n3. Applies `BUG_SHARED_CONTEXT_SHADER_COMPILATION` to `DRIVER_IRIS` on Linux OpenGL (related upstream Mesa report: https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16865).\n\n*(Note per Contributing.md: The author investigated, drafted, and refined this patch with LLM assistance.)*', 'created_at': '2026-11-13T20:14:38Z', 'updated_at': '2026-11-13T20:14:38Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'e0cab26a9a8f7b00fa78435cefff6f30da80b57d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15021/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15021/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/15021/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c0041900c3b578aa64db5a1dff2bac5894d8d377', 'head': {'label': 'jpferraz-git:fix/ogl-mesa-iris-driver-detection', 'ref': 'fix/ogl-mesa-iris-driver-detection', 'sha': 'c0041900c3b578aa64db5a1dff2bac5894d8d377', '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}, 'repo': {'id': 1445749081, 'node_id': 'R_kgDOVixhWQ', 'name': 'dolphin', 'full_name': 'jpferraz-git/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/jpferraz-git/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/jpferraz-git/dolphin', 'forks_url': 'https://api.github.com/repos/jpferraz-git/dolphin/forks', 'keys_url': 'https://api.github.com/repos/jpferraz-git/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/jpferraz-git/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/jpferraz-git/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/jpferraz-git/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/jpferraz-git/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/jpferraz-git/dolphin/events', 'assignees_url': 'https://api.github.com/repos/jpferraz-git/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/jpferraz-git/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/jpferraz-git/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/jpferraz-git/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/jpferraz-git/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/jpferraz-git/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/jpferraz-git/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/jpferraz-git/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/jpferraz-git/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/jpferraz-git/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/jpferraz-git/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/jpferraz-git/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/jpferraz-git/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/jpferraz-git/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/jpferraz-git/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/jpferraz-git/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/jpferraz-git/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/jpferraz-git/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/jpferraz-git/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/jpferraz-git/dolphin/merges', 'archive_url': 'https://api.github.com/repos/jpferraz-git/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/jpferraz-git/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/jpferraz-git/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/jpferraz-git/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/jpferraz-git/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/jpferraz-git/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/jpferraz-git/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/jpferraz-git/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/jpferraz-git/dolphin/deployments', 'created_at': '2026-11-04T14:11:19Z', 'updated_at': '2026-11-04T14:11:19Z', 'pushed_at': '2026-11-13T20:14:22Z', 'git_url': 'git://github.com/jpferraz-git/dolphin.git', 'ssh_url': 'git@github.com:jpferraz-git/dolphin.git', 'clone_url': 'https://github.com/jpferraz-git/dolphin.git', 'svn_url': 'https://github.com/jpferraz-git/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 526183, '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': 'e66427c87eb75e70a893270a8078045796b83df4', '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-13T21:29:32Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563847, 'stargazers_count': 15820, 'watchers_count': 15820, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3387, 'open_issues': 489, 'watchers': 15820, '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/15021'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15021'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15021'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15021/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15021/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/15021/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c0041900c3b578aa64db5a1dff2bac5894d8d377'}}, '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-13T21:29:32Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563847, 'stargazers_count': 15820, 'watchers_count': 15820, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3387, 'open_issues': 489, 'watchers': 15820, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-13T21:40:42.011409 {'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5898431897, 'node_id': 'PRR_kwDOALCn2M8AAAABX5LtmQ', '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': None, 'commit_id': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'state': 'approved', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15022#pullrequestreview-5898431897', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15022#pullrequestreview-5898431897'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022'}}, 'submitted_at': '2026-11-13T21:40:39Z', 'updated_at': '2026-11-13T21:40:39Z', 'author_association': 'CONTRIBUTOR'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022', 'id': 5302779776, 'node_id': 'PR_kwDOALCn2M8AAAABPBH_gA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15022', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15022.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15022.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022', 'number': 15022, 'state': 'open', 'locked': False, 'title': 'Fix typos in documentation', 'user': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'created_at': '2026-11-13T21:01:12Z', 'updated_at': '2026-11-13T21:15:04Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '6e0e0e1e7c9e8e1f3954dca6790787160a8927ee', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/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/15022/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'head': {'label': 'hamidzr:fixtypos', 'ref': 'fixtypos', 'sha': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'user': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1457095596, 'node_id': 'R_kgDOVtmDrA', 'name': 'dolphin', 'full_name': 'hamidzr/dolphin', 'private': False, 'owner': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/hamidzr/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/hamidzr/dolphin', 'forks_url': 'https://api.github.com/repos/hamidzr/dolphin/forks', 'keys_url': 'https://api.github.com/repos/hamidzr/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/hamidzr/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/hamidzr/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/hamidzr/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/hamidzr/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/hamidzr/dolphin/events', 'assignees_url': 'https://api.github.com/repos/hamidzr/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/hamidzr/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/hamidzr/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/hamidzr/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/hamidzr/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/hamidzr/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/hamidzr/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/hamidzr/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/hamidzr/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/hamidzr/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/hamidzr/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/hamidzr/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/hamidzr/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/hamidzr/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/hamidzr/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/hamidzr/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/hamidzr/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/hamidzr/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/hamidzr/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/hamidzr/dolphin/merges', 'archive_url': 'https://api.github.com/repos/hamidzr/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/hamidzr/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/hamidzr/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/hamidzr/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/hamidzr/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/hamidzr/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/hamidzr/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/hamidzr/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/hamidzr/dolphin/deployments', 'created_at': '2026-11-13T21:01:08Z', 'updated_at': '2026-11-13T21:01:08Z', 'pushed_at': '2026-11-13T21:01:11Z', 'git_url': 'git://github.com/hamidzr/dolphin.git', 'ssh_url': 'git@github.com:hamidzr/dolphin.git', 'clone_url': 'https://github.com/hamidzr/dolphin.git', 'svn_url': 'https://github.com/hamidzr/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563847, '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': '5c496d1838a20660590fece1edfdf58148f80a60', '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-13T21:29:32Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563847, 'stargazers_count': 15820, 'watchers_count': 15820, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3387, 'open_issues': 489, 'watchers': 15820, '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/15022'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15022'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/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/15022/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c1e405f03043ac70020a3527e7e14ff6c41c0d10'}}, '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-13T21:29:32Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563847, 'stargazers_count': 15820, 'watchers_count': 15820, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3387, 'open_issues': 489, 'watchers': 15820, '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': '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}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-13T21:15:06.066168 {'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5898146915, 'node_id': 'PRR_kwDOALCn2M8AAAABX46UYw', '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': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'state': 'approved', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15022#pullrequestreview-5898146915', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15022#pullrequestreview-5898146915'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022'}}, 'submitted_at': '2026-11-13T21:15:03Z', 'updated_at': '2026-11-13T21:15:03Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022', 'id': 5302779776, 'node_id': 'PR_kwDOALCn2M8AAAABPBH_gA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15022', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15022.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15022.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022', 'number': 15022, 'state': 'open', 'locked': False, 'title': 'Fix typos in documentation', 'user': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'created_at': '2026-11-13T21:01:12Z', 'updated_at': '2026-11-13T21:01:12Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '6e0e0e1e7c9e8e1f3954dca6790787160a8927ee', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/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/15022/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'head': {'label': 'hamidzr:fixtypos', 'ref': 'fixtypos', 'sha': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'user': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1457095596, 'node_id': 'R_kgDOVtmDrA', 'name': 'dolphin', 'full_name': 'hamidzr/dolphin', 'private': False, 'owner': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/hamidzr/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/hamidzr/dolphin', 'forks_url': 'https://api.github.com/repos/hamidzr/dolphin/forks', 'keys_url': 'https://api.github.com/repos/hamidzr/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/hamidzr/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/hamidzr/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/hamidzr/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/hamidzr/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/hamidzr/dolphin/events', 'assignees_url': 'https://api.github.com/repos/hamidzr/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/hamidzr/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/hamidzr/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/hamidzr/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/hamidzr/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/hamidzr/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/hamidzr/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/hamidzr/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/hamidzr/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/hamidzr/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/hamidzr/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/hamidzr/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/hamidzr/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/hamidzr/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/hamidzr/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/hamidzr/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/hamidzr/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/hamidzr/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/hamidzr/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/hamidzr/dolphin/merges', 'archive_url': 'https://api.github.com/repos/hamidzr/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/hamidzr/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/hamidzr/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/hamidzr/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/hamidzr/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/hamidzr/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/hamidzr/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/hamidzr/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/hamidzr/dolphin/deployments', 'created_at': '2026-11-13T21:01:08Z', 'updated_at': '2026-11-13T21:01:08Z', 'pushed_at': '2026-11-13T21:01:11Z', 'git_url': 'git://github.com/hamidzr/dolphin.git', 'ssh_url': 'git@github.com:hamidzr/dolphin.git', 'clone_url': 'https://github.com/hamidzr/dolphin.git', 'svn_url': 'https://github.com/hamidzr/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563847, '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': '5c496d1838a20660590fece1edfdf58148f80a60', '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-13T19:21:16Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563847, 'stargazers_count': 15819, 'watchers_count': 15819, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3387, 'open_issues': 489, 'watchers': 15819, '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/15022'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15022'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/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/15022/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c1e405f03043ac70020a3527e7e14ff6c41c0d10'}}, '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-13T19:21:16Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563847, 'stargazers_count': 15819, 'watchers_count': 15819, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3387, 'open_issues': 489, 'watchers': 15819, '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-13T21:01:15.928909 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 15022, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022', 'id': 5302779776, 'node_id': 'PR_kwDOALCn2M8AAAABPBH_gA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15022', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15022.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15022.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022', 'number': 15022, 'state': 'open', 'locked': False, 'title': 'Fix typos in documentation', 'user': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'created_at': '2026-11-13T21:01:12Z', 'updated_at': '2026-11-13T21:01:12Z', '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/15022/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/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/15022/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'head': {'label': 'hamidzr:fixtypos', 'ref': 'fixtypos', 'sha': 'c1e405f03043ac70020a3527e7e14ff6c41c0d10', 'user': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1457095596, 'node_id': 'R_kgDOVtmDrA', 'name': 'dolphin', 'full_name': 'hamidzr/dolphin', 'private': False, 'owner': {'login': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/hamidzr/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/hamidzr/dolphin', 'forks_url': 'https://api.github.com/repos/hamidzr/dolphin/forks', 'keys_url': 'https://api.github.com/repos/hamidzr/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/hamidzr/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/hamidzr/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/hamidzr/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/hamidzr/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/hamidzr/dolphin/events', 'assignees_url': 'https://api.github.com/repos/hamidzr/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/hamidzr/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/hamidzr/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/hamidzr/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/hamidzr/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/hamidzr/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/hamidzr/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/hamidzr/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/hamidzr/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/hamidzr/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/hamidzr/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/hamidzr/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/hamidzr/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/hamidzr/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/hamidzr/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/hamidzr/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/hamidzr/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/hamidzr/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/hamidzr/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/hamidzr/dolphin/merges', 'archive_url': 'https://api.github.com/repos/hamidzr/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/hamidzr/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/hamidzr/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/hamidzr/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/hamidzr/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/hamidzr/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/hamidzr/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/hamidzr/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/hamidzr/dolphin/deployments', 'created_at': '2026-11-13T21:01:08Z', 'updated_at': '2026-11-13T21:01:08Z', 'pushed_at': '2026-11-13T21:01:11Z', 'git_url': 'git://github.com/hamidzr/dolphin.git', 'ssh_url': 'git@github.com:hamidzr/dolphin.git', 'clone_url': 'https://github.com/hamidzr/dolphin.git', 'svn_url': 'https://github.com/hamidzr/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 563847, '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': '5c496d1838a20660590fece1edfdf58148f80a60', '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-13T19:21:16Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563847, 'stargazers_count': 15819, 'watchers_count': 15819, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3387, 'open_issues': 489, 'watchers': 15819, '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/15022'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15022'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15022/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15022/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/15022/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c1e405f03043ac70020a3527e7e14ff6c41c0d10'}}, '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': 6, 'deletions': 6, 'changed_files': 2}, '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-13T19:21:16Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563847, 'stargazers_count': 15819, 'watchers_count': 15819, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3387, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 489, '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': 3387, 'open_issues': 489, 'watchers': 15819, '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': 'hamidzr', 'id': 12127420, 'node_id': 'MDQ6VXNlcjEyMTI3NDIw', 'avatar_url': 'https://avatars.githubusercontent.com/u/12127420?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/hamidzr', 'html_url': 'https://github.com/hamidzr', 'followers_url': 'https://api.github.com/users/hamidzr/followers', 'following_url': 'https://api.github.com/users/hamidzr/following{/other_user}', 'gists_url': 'https://api.github.com/users/hamidzr/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/hamidzr/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/hamidzr/subscriptions', 'organizations_url': 'https://api.github.com/users/hamidzr/orgs', 'repos_url': 'https://api.github.com/users/hamidzr/repos', 'events_url': 'https://api.github.com/users/hamidzr/events{/privacy}', 'received_events_url': 'https://api.github.com/users/hamidzr/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-13T20:44:09.518925 {'source': 'webserver', 'gh_type': 'check_suite', 'raw': {'action': 'requested', 'check_suite': {'id': 117802620997, 'node_id': 'CS_kwDOALCn2M8AAAAbbZVYRQ', 'head_branch': 'master', 'head_sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/check-suites/117802620997', 'before': 'e66427c87eb75e70a893270a8078045796b83df4', 'after': '5c496d1838a20660590fece1edfdf58148f80a60', 'pull_requests': [{'url': 'https://api.github.com/repos/Faster-Brawl/dolphin/pulls/5', 'id': 1222541325, 'number': 5, 'head': {'ref': 'master', 'sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'repo': {'id': 11577304, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'name': 'dolphin'}}, 'base': {'ref': 'master', 'sha': 'eb9e232680dfdc04ec2adab05dbc530b1e707fc9', 'repo': {'id': 577809188, 'url': 'https://api.github.com/repos/Faster-Brawl/dolphin', 'name': 'dolphin'}}}, {'url': 'https://api.github.com/repos/dirextric-auto/dolphin/pulls/1', 'id': 571486662, 'number': 1, 'head': {'ref': 'master', 'sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'repo': {'id': 11577304, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'name': 'dolphin'}}, 'base': {'ref': 'master', 'sha': '1e71904cb9930eccc036e2ce2360beaa746befa7', 'repo': {'id': 337848960, 'url': 'https://api.github.com/repos/dirextric-auto/dolphin', 'name': 'dolphin'}}}, {'url': 'https://api.github.com/repos/zurgeg/dolphin-vr-no-ovr/pulls/1', 'id': 518053317, 'number': 1, 'head': {'ref': 'master', 'sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'repo': {'id': 11577304, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'name': 'dolphin'}}, 'base': {'ref': 'VR-Hydra', 'sha': 'ea9f95955e5335cc238b2f9c5a0a6dfdc8698aec', 'repo': {'id': 311469400, 'url': 'https://api.github.com/repos/zurgeg/dolphin-vr-no-ovr', 'name': 'dolphin-vr-no-ovr'}}}, {'url': 'https://api.github.com/repos/weihuoya/dolphin/pulls/1', 'id': 400884538, 'number': 1, 'head': {'ref': 'master', 'sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'repo': {'id': 11577304, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'name': 'dolphin'}}, 'base': {'ref': 'master', 'sha': '0f4c971326ae9389b3ad55b0fefacb708d148f4d', 'repo': {'id': 143011855, 'url': 'https://api.github.com/repos/weihuoya/dolphin', 'name': 'dolphin'}}}], '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-13T20:44:01Z', 'updated_at': '2026-11-13T20:44:01Z', 'rerequestable': True, 'runs_rerequestable': True, 'latest_check_runs_count': 0, 'check_runs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/check-suites/117802620997/check-runs', 'head_commit': {'id': '5c496d1838a20660590fece1edfdf58148f80a60', 'tree_id': '4aea930d4d2230372349f3d1808a65d1fe426fe6', 'message': 'Merge pull request #15019 from jordan-woyak/perf-track-fps-fix\n\nPerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', 'timestamp': '2026-11-13T20:43:59Z', 'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com'}}}, '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-13T19:21:16Z', 'pushed_at': '2026-11-13T20:43:59Z', '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': 563856, 'stargazers_count': 15819, 'watchers_count': 15819, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3386, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3386, 'open_issues': 488, 'watchers': 15819, '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-13T20:44:02.978079 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'closed', 'number': 15019, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15019', 'id': 5293414310, 'node_id': 'PR_kwDOALCn2M8AAAABO4MXpg', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/15019', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/15019.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/15019.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15019', 'number': 15019, 'state': 'closed', 'locked': False, 'title': 'PerformanceTracker: Fix broken FPS calculation on Windows after a multi-second delay.', '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': 'Addresses: https://bugs.dolphin-emu.org/issues/14181\r\nThis is a regression from #14877\r\n\r\n`long` is only 32bits on Windows so nanoseconds easily overflowed when combined with `Skip Duplicate Frames` if a game didn\'t display a frame for multiple seconds, such as during "Resident Evil Archives: Resident Evil Zero" loading screens.\r\n\r\nEdit: Confirmed to fix the issue by two users.', 'created_at': '2026-11-13T09:42:32Z', 'updated_at': '2026-11-13T20:44:00Z', 'closed_at': '2026-11-13T20:44:00Z', 'merged_at': '2026-11-13T20:44:00Z', 'merge_commit_sha': '5c496d1838a20660590fece1edfdf58148f80a60', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15019/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15019/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/15019/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/63557b8a6713166770d49a649dbc84f6f1eca44a', 'head': {'label': 'jordan-woyak:perf-track-fps-fix', 'ref': 'perf-track-fps-fix', 'sha': '63557b8a6713166770d49a649dbc84f6f1eca44a', '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}, 'repo': {'id': 16818408, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNjgxODQwOA==', 'name': 'dolphin', 'full_name': 'jordan-woyak/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/jordan-woyak/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/jordan-woyak/dolphin', 'forks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/forks', 'keys_url': 'https://api.github.com/repos/jordan-woyak/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/jordan-woyak/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/jordan-woyak/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/events', 'assignees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/jordan-woyak/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/jordan-woyak/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/jordan-woyak/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/jordan-woyak/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/jordan-woyak/dolphin/merges', 'archive_url': 'https://api.github.com/repos/jordan-woyak/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/jordan-woyak/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/jordan-woyak/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/jordan-woyak/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/jordan-woyak/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/jordan-woyak/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/jordan-woyak/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/deployments', 'created_at': '2014-02-13T21:50:38Z', 'updated_at': '2026-06-27T21:22:47Z', 'pushed_at': '2026-11-13T19:35:25Z', 'git_url': 'git://github.com/jordan-woyak/dolphin.git', 'ssh_url': 'git@github.com:jordan-woyak/dolphin.git', 'clone_url': 'https://github.com/jordan-woyak/dolphin.git', 'svn_url': 'https://github.com/jordan-woyak/dolphin', 'homepage': None, 'size': 530542, 'stargazers_count': 5, 'watchers_count': 5, 'language': 'C++', 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': False, 'has_pages': False, 'has_discussions': False, 'forks_count': 5, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 2, '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': 5, 'open_issues': 2, 'watchers': 5, 'default_branch': 'master', 'allow_squash_merge': True, 'allow_merge_commit': True, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': True, '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': 'e36cd326c0af3179bf75a8deb5e2ecf92ab78b72', '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-13T19:21:16Z', 'pushed_at': '2026-11-13T19:55:29Z', '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': 563856, 'stargazers_count': 15819, 'watchers_count': 15819, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3386, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3386, 'open_issues': 488, 'watchers': 15819, '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/15019'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/15019'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15019'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/15019/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/15019/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/15019/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/63557b8a6713166770d49a649dbc84f6f1eca44a'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': True, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': {'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}, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': False, 'commits': 1, 'additions': 5, 'deletions': 5, '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-13T19:21:16Z', 'pushed_at': '2026-11-13T19:55:29Z', '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': 563856, 'stargazers_count': 15819, 'watchers_count': 15819, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3386, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 488, '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': 3386, 'open_issues': 488, 'watchers': 15819, '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'}