Status for Dolphin Central
Recent events
2026-10-15T21:10:09.319814 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-dbg-x64', 'pr': 14933, 'success': False, 'pending': False, 'url': 'https://dolphin.ci/#/builders/31/builds/10752', 'description': 'Build failed on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-15T21:10:08.403600 {'source': 'webserver', 'raw': {'buildid': 192658, 'number': 10752, 'builderid': 31, 'buildrequestid': 193236, 'workerid': 4, 'masterid': 1, 'started_at': 1792098255, 'complete_at': 1792098596, 'locks_duration_s': 0, 'complete': True, 'state_string': 'failed test (failure)', 'results': 2, 'properties': {'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['c:\\buildbot\\pr-win-dbg-x64', 'Worker'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'buildnumber': [10752, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'warnings-count': [7, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 193236, 'buildsetid': 43395, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1792098255, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10752'}, 'type': 'raw_bb_hook'}
2026-10-15T21:08:13.586726 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-deb-dbg-x64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/1/builds/10744', 'description': 'Build succeeded on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-15T21:08:12.095545 {'source': 'webserver', 'raw': {'buildid': 192657, 'number': 10744, 'builderid': 1, 'buildrequestid': 193227, 'workerid': 9, 'masterid': 1, 'started_at': 1792097624, 'complete_at': 1792098472, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'shortrev': ['73b093', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'workername': ['debian', 'Worker'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/buildbot/pr-deb-dbg-x64', 'Worker'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'buildnumber': [10744, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [1, 'Builder'], 'branchname': ['pr-14933', 'Change'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'warnings-count': [2, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 193227, 'buildsetid': 43395, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1792097624, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10744'}, 'type': 'raw_bb_hook'}
2026-10-15T21:08:03.562080 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'Dentomologist,Tilka,Pokechu22,phire,JosJuice,degasus,AdmiralCurtiss,iwubcode,CrossVR,OatmealDome,linkmauve,jordan-woyak,leoetlino')", 'type': 'internal_log'}
2026-10-15T21:08:02.708417 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T21:07:21.908218 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-flatpak-x64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/43/builds/5893', 'description': 'Build succeeded on builder pr-flatpak-x64', 'type': 'build_status'}
2026-10-15T21:07:20.947479 {'source': 'webserver', 'raw': {'buildid': 192653, 'number': 5893, 'builderid': 43, 'buildrequestid': 193237, 'workerid': 13, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792098428, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'branch': ['refs/pull/14933/head', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-flatpak-x64', 'Builder'], 'builderid': [43, 'Builder'], 'scheduler': ['pr', 'Scheduler'], 'shortrev': ['73b093', 'Change'], 'workername': ['altair-flatpak', 'Worker'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'buildnumber': [5893, 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-x64', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13028', 'SetPropertyFromCommand Step']}, 'buildrequest': {'buildrequestid': 193237, 'buildsetid': 43395, 'builderid': 43, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/5893'}, 'type': 'raw_bb_hook'}
2026-10-15T21:06:22.896305 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T21:06:21.021249 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T21:04:53.107819 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-arm64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/13/builds/10743', 'description': 'Build succeeded on builder pr-win-arm64', 'type': 'build_status'}
2026-10-15T21:04:52.671554 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-dbg-x64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/31/builds/10752', 'description': 'Auto build in progress on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-15T21:04:52.451287 {'source': 'webserver', 'raw': {'buildid': 192655, 'number': 10743, 'builderid': 13, 'buildrequestid': 193232, 'workerid': 4, 'masterid': 1, 'started_at': 1792097409, 'complete_at': 1792098255, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [13, 'Builder'], 'workername': ['windows', 'Worker'], 'buildnumber': [10743, 'Build'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'shortrev': ['73b093', 'Change'], 'buildername': ['pr-win-arm64', 'Builder'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'codebase': ['', 'Build'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'build_url': ['https://dl.dolphin-emu.org/prs/ba/b3/pr-14933-dolphin-latest-arm64.7z', 'SetProperty'], 'builddir': ['c:\\buildbot\\pr-win-arm64', 'Worker'], 'warnings-count': [7, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 193232, 'buildsetid': 43395, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1792097409, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10743'}, 'type': 'raw_bb_hook'}
2026-10-15T21:04:51.800500 {'source': 'webserver', 'raw': {'buildid': 192658, 'number': 10752, 'builderid': 31, 'buildrequestid': 193236, 'workerid': 4, 'masterid': 1, 'started_at': 1792098255, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'buildnumber': [10752, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193236, 'buildsetid': 43395, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1792098255, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10752'}, 'type': 'raw_bb_hook'}
2026-10-15T21:01:21.020559 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T21:01:19.285848 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:58:02.708112 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'Dentomologist,Tilka,Pokechu22,phire,JosJuice,degasus,AdmiralCurtiss,iwubcode,CrossVR,OatmealDome,linkmauve,jordan-woyak,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:58:02.357214 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:57:44.752395 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 edited pull request #14933: Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests. (\x0306master\x03...\x0306hookable-event-better\x03): \x1f\x0302https://dolp.in/pr14933\x03\x1f', 'type': 'notification'}
2026-10-15T20:57:44.751805 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14933, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'id': 4879527125, 'node_id': 'PR_kwDOALCn2M8AAAABItes1Q', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14933.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14933.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933', 'number': 14933, 'state': 'open', 'locked': False, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', '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': 'In trying to deal with objects with complicated lifetimes I found our `HookableEvent` lacking.\r\n\r\nThere are now more behavior guarantees and possibilities.\r\n- Recursive `Trigger` works.\r\n- Disconnect within `Trigger` works and instantly destructs the callback.\r\n- Register/Connect within `Trigger` works and is *not* invoked until next `Trigger`\r\n- An `EventHook` callback can hold a `EventHook` to itself.\r\n - keeping itself alive until it wants or until the `HookableEvent` goes out of scope.\r\n\r\nThe existing `HookableEvent` -> `EventHook` system was a one-to-many relationship.\r\nIt made a particular scenario inconvenient:\r\ne.g. Some class produces many objects and wishes to connect events with them, with either the producer or the many objects going out of scope first.\r\n\r\nThe one-to-many relationship required maintaining a list of `EventHook`, manually removing them based on the instance lifetime.\r\n\r\nA new `HookHolder` class is a introduced that can hold many `EventHook`, allowing for a many-to-many relationship.\r\nThe internal container is automatically adjusted as hooks are disconnected.\r\n```cpp\r\n HookableEvent<> event;\r\n HookHolder holder;\r\n \r\n holder.Connect(event, [&] { fmt::print("triggered 1"); });\r\n \r\n WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\r\n holder.Disconnect(hook);\r\n```\r\n`HookHolder` creates a system analogous to Qt\'s `connect`.\r\nIn Qt one doesn\'t need to manually maintain a container of "hooks" to keep a `connect` active, you just derive from `QObject`.\r\nSimilarly here, now you can just have one `HookHolder`.\r\n\r\nI\'ve added a bunch of unit tests.\r\n', 'created_at': '2026-10-15T20:38:45Z', 'updated_at': '2026-10-15T20:57:41Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '3497ddcb8f60c083cb5f74a189abc8f4bb50d6b9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933/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/14933/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/73b093ab3252ba58b16ee7831da8a622c7bb085f', 'head': {'label': 'jordan-woyak:hookable-event-better', 'ref': 'hookable-event-better', 'sha': '73b093ab3252ba58b16ee7831da8a622c7bb085f', '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-10-15T20:37:08Z', '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': 527818, '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': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', '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-10-15T16:17:49Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 482, 'watchers': 15661, '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/14933'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933/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/14933/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/73b093ab3252ba58b16ee7831da8a622c7bb085f'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 2, 'additions': 737, 'deletions': 68, 'changed_files': 3}, 'changes': {'body': {'from': 'In trying to deal with objects with complicated lifetimes I found our `HookableEvent` lacking.\n\nThere are now more behavior guarantees and possibilities.\n- Recursive `Trigger` works.\n- Disconnect within `Trigger` works and instantly destructs the callback.\n- Register/Connect within `Trigger` works and is *not* invoked until next `Trigger`\n- An `EventHook` callback can hold a `EventHook` to itself.\n - keeping itself alive until it wants or until the `HookableEvent` goes out of scope.\n\nThe existing `HookableEvent` -> `EventHook` system was a one-to-many relationship.\nIt made a particular scenario inconvenient:\ne.g. Some class produces many objects and wishes to connect events with them, with either the producer or the many objects going out of scope first.\n\nThe one-to-many relationship required maintaining a list of `EventHook`, manually removing them based on the instance lifetime.\n\nA new `HookHolder` class is a introduced that can hold many `EventHook`, allowing for a many-to-many relationship.\nThe internal container is automatically adjusted as hooks are disconnected.\n```cpp\n HookableEvent<> event;\n HookHolder holder;\n \n holder.Connect(event, [&] { fmt::print("triggered 1"); });\n \n WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n holder.Disconnect(hook);\n```\n\nI\'ve added a bunch of unit tests.\n'}}, '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-10-15T16:17:49Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 482, 'watchers': 15661, '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-10-15T20:57:44.751792 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14933, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'head_ref_name': 'hookable-event-better', 'safe_author': True, 'base_sha': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'head_sha': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-15T20:57:29.554017 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14933 \x0304failed\x03 on builders [pr-osx-universal]: \x1f\x0302https://dolphin.ci/#/builders/7/builds/10763\x03\x1f', 'type': 'notification'}
2026-10-15T20:56:59.553368 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-osx-universal', 'pr': 14933, 'success': False, 'pending': False, 'url': 'https://dolphin.ci/#/builders/7/builds/10763', 'description': 'Build failed on builder pr-osx-universal', 'type': 'build_status'}
2026-10-15T20:56:58.590119 {'source': 'webserver', 'raw': {'buildid': 192652, 'number': 10763, 'builderid': 7, 'buildrequestid': 193229, 'workerid': 8, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792097793, 'locks_duration_s': 0, 'complete': True, 'state_string': 'failed configure (failure)', 'results': 2, 'properties': {'shortrev': ['73b093', 'Change'], 'builderid': [7, 'Builder'], 'workername': ['osx-m1', 'Worker'], 'branchname': ['pr-14933', 'Change'], 'pr_id': [14933, 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-osx-universal', 'Builder'], 'buildnumber': [10763, 'Build'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'builddir': ['/Users/ci/worker/base/pr-osx-universal', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 193229, 'buildsetid': 43395, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10763'}, 'type': 'raw_bb_hook'}
2026-10-15T20:56:19.284823 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
Recent 'build_status' events
2026-10-15T21:10:09.319814 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-dbg-x64', 'pr': 14933, 'success': False, 'pending': False, 'url': 'https://dolphin.ci/#/builders/31/builds/10752', 'description': 'Build failed on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-15T21:08:13.586726 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-deb-dbg-x64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/1/builds/10744', 'description': 'Build succeeded on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-15T21:07:21.908218 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-flatpak-x64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/43/builds/5893', 'description': 'Build succeeded on builder pr-flatpak-x64', 'type': 'build_status'}
2026-10-15T21:04:53.107819 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-arm64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/13/builds/10743', 'description': 'Build succeeded on builder pr-win-arm64', 'type': 'build_status'}
2026-10-15T21:04:52.671554 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-dbg-x64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/31/builds/10752', 'description': 'Auto build in progress on builder pr-win-dbg-x64', 'type': 'build_status'}
2026-10-15T20:56:59.553368 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-osx-universal', 'pr': 14933, 'success': False, 'pending': False, 'url': 'https://dolphin.ci/#/builders/7/builds/10763', 'description': 'Build failed on builder pr-osx-universal', 'type': 'build_status'}
2026-10-15T20:55:02.487510 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-flatpak-arm64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/44/builds/5833', 'description': 'Build succeeded on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-10-15T20:54:26.721832 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-deb-dbg-x64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/1/builds/10744', 'description': 'Auto build in progress on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-10-15T20:54:25.887565 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-deb-x64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/26/builds/10743', 'description': 'Build succeeded on builder pr-deb-x64', 'type': 'build_status'}
2026-10-15T20:53:23.418600 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-ubu-x64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/27/builds/10745', 'description': 'Build succeeded on builder pr-ubu-x64', 'type': 'build_status'}
2026-10-15T20:52:25.035835 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-android', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/22/builds/10750', 'description': 'Build succeeded on builder pr-android', 'type': 'build_status'}
2026-10-15T20:50:49.420072 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-x64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/2/builds/10746', 'description': 'Build succeeded on builder pr-win-x64', 'type': 'build_status'}
2026-10-15T20:50:48.530794 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-arm64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/13/builds/10743', 'description': 'Auto build in progress on builder pr-win-arm64', 'type': 'build_status'}
2026-10-15T20:42:33.541263 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-freebsd-x64', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/11/builds/10750', 'description': 'Build succeeded on builder pr-freebsd-x64', 'type': 'build_status'}
2026-10-15T20:40:26.729064 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'lint', 'pr': 14933, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/9/builds/10748', 'description': 'Build succeeded on builder lint', 'type': 'build_status'}
2026-10-15T20:40:03.665702 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-ubu-x64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/27/builds/10745', 'description': 'Auto build in progress on builder pr-ubu-x64', 'type': 'build_status'}
2026-10-15T20:40:01.012867 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-win-x64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/2/builds/10746', 'description': 'Auto build in progress on builder pr-win-x64', 'type': 'build_status'}
2026-10-15T20:40:00.320640 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-freebsd-x64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/11/builds/10750', 'description': 'Auto build in progress on builder pr-freebsd-x64', 'type': 'build_status'}
2026-10-15T20:39:59.604171 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-osx-universal', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/7/builds/10763', 'description': 'Auto build in progress on builder pr-osx-universal', 'type': 'build_status'}
2026-10-15T20:39:58.905036 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-deb-x64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/26/builds/10743', 'description': 'Auto build in progress on builder pr-deb-x64', 'type': 'build_status'}
2026-10-15T20:39:58.198278 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-android', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/22/builds/10750', 'description': 'Auto build in progress on builder pr-android', 'type': 'build_status'}
2026-10-15T20:39:57.453552 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'lint', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/9/builds/10748', 'description': 'Auto build in progress on builder lint', 'type': 'build_status'}
2026-10-15T20:39:36.973003 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-flatpak-x64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/43/builds/5893', 'description': 'Auto build in progress on builder pr-flatpak-x64', 'type': 'build_status'}
2026-10-15T20:39:36.244546 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'pr-flatpak-arm64', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/44/builds/5833', 'description': 'Auto build in progress on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-10-15T20:39:00.288515 {'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'shortrev': '73b093', 'service': 'lint', 'pr': 14933, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/', 'description': 'Auto build pending', 'type': 'build_status'}
Recent 'gh_issue_comment' events
2026-10-15T09:30:40.276647 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'MayImilae', 'action': 'edited', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'safe_author': True, 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this change, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case? Do you think it's out of scope?\r\n\r\nFinally, forgive me if I'm wrong, but there is a lot about how your post is structured that smells like AI. That's fine, our project has no issue with LLM use in this part of our code, as this doesn't touch any emulation bits. Buuut I and many other developers would appreciate a clear disclosure of any LLM use.", 'raw': {'action': 'edited', 'changes': {'body': {'from': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this change, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case? Do you think it's out of scope?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-15T07:54:15Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/reactions', 'total_count': 1, '+1': 1, '-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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6187222172, 'node_id': 'IC_kwDOALCn2M8AAAABcMmEnA', 'user': {'login': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T07:50:11Z', 'updated_at': '2026-10-15T09:30:38Z', 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this change, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case? Do you think it's out of scope?\r\n\r\nFinally, forgive me if I'm wrong, but there is a lot about how your post is structured that smells like AI. That's fine, our project has no issue with LLM use in this part of our code, as this doesn't touch any emulation bits. Buuut I and many other developers would appreciate a clear disclosure of any LLM use.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172/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-10-15T06:38:48Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15661, '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': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-15T07:54:18.229857 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'MayImilae', 'action': 'edited', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'safe_author': True, 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this change, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case? Do you think it's out of scope?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'raw': {'action': 'edited', 'changes': {'body': {'from': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-15T07:54:15Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/reactions', 'total_count': 1, '+1': 1, '-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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6187222172, 'node_id': 'IC_kwDOALCn2M8AAAABcMmEnA', 'user': {'login': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T07:50:11Z', 'updated_at': '2026-10-15T07:54:15Z', 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this change, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case? Do you think it's out of scope?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172/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-10-15T06:38:48Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15661, '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': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-15T07:52:23.950986 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'MayImilae', 'action': 'edited', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'safe_author': True, 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'raw': {'action': 'edited', 'changes': {'body': {'from': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than go on and on about all the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting to individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nThis PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's a TON of games, and you don't seem to be doing anything with them at all. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-15T07:50:11Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/reactions', 'total_count': 1, '+1': 1, '-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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6187222172, 'node_id': 'IC_kwDOALCn2M8AAAABcMmEnA', 'user': {'login': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T07:50:11Z', 'updated_at': '2026-10-15T07:52:22Z', 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172/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-10-15T06:38:48Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15661, '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': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-15T07:50:13.699204 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'MayImilae', 'action': 'created', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'safe_author': True, 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than go on and on about all the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting to individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nThis PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's a TON of games, and you don't seem to be doing anything with them at all. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-15T07:50:11Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/reactions', 'total_count': 1, '+1': 1, '-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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6187222172, 'node_id': 'IC_kwDOALCn2M8AAAABcMmEnA', 'user': {'login': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T07:50:11Z', 'updated_at': '2026-10-15T07:50:11Z', 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than go on and on about all the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting to individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nThis PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's a TON of games, and you don't seem to be doing anything with them at all. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172/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-10-15T06:38:48Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15661, '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': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-15T04:39:22.150195 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'OatmealDome', 'action': 'created', 'id': 14545, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14545#issuecomment-6184548241', 'safe_author': True, 'body': "OK, I've made it so that it requires the LunarG SDK instead of just using any Vulkan SDK it finds. I've also added a loader flag so that it doesn't search for Vulkan drivers outside of the app bundle when running under DolphinQt.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'id': 4198171870, 'node_id': 'PR_kwDOALCn2M7PuCj3', 'number': 14545, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'user': {'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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-04-03T03:59:53Z', 'updated_at': '2026-10-15T04:39:19Z', '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/14545', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.patch', 'merged_at': None}, 'body': "Follow-up to #14492.\r\n\r\nThis allows us to drop our custom MoltenVK and switch to one that is pre-built. I've installed SDK `1.4.341.1` on the build machine.\r\n\r\nI've also added support for KosmicKrisp in this PR, but I'll probably make it off-by-default before merging to avoid confusing users. I just wanted to have the CI create a build with KosmicKrisp enabled.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/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/14545/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6184548241', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545#issuecomment-6184548241', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545', 'id': 6184548241, 'node_id': 'IC_kwDOALCn2M8AAAABcKC3kQ', 'user': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T04:39:19Z', 'updated_at': '2026-10-15T04:39:19Z', 'body': "OK, I've made it so that it requires the LunarG SDK instead of just using any Vulkan SDK it finds. I've also added a loader flag so that it doesn't search for Vulkan drivers outside of the app bundle when running under DolphinQt.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6184548241/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-10-15T03:38:30Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15660, 'watchers_count': 15660, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15660, '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': 'gh_issue_comment'}
2026-10-14T17:59:21.395639 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'RubGarFue', 'action': 'created', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174877268', 'safe_author': False, 'body': '> Bluetooth Passthrough refers to our Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED feature.\r\n\r\nSorry, my bad. I just meant that when a new Wiimote is connected, we select its Bluetooth device instead of its SDL device.\r\n\r\nI\'ll update the original comment and change "Bluetooth passthrough selection" to "Bluetooth device selection" to make it clearer.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 5, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T17:59:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174877268', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174877268', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6174877268, 'node_id': 'IC_kwDOALCn2M8AAAABcA0mVA', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-14T17:59:18Z', 'updated_at': '2026-10-14T17:59:18Z', 'body': '> Bluetooth Passthrough refers to our Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED feature.\r\n\r\nSorry, my bad. I just meant that when a new Wiimote is connected, we select its Bluetooth device instead of its SDL device.\r\n\r\nI\'ll update the original comment and change "Bluetooth passthrough selection" to "Bluetooth device selection" to make it clearer.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174877268/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-14T17:32:38.314052 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174371456', 'safe_author': True, 'body': "> > I don't think this is a good idea. But also this doesn't seem to actually be implemented?\r\n> \r\n> What exactly do you mean by it not being implemented? Maybe I didn't explain that part clearly enough. It's not a separate feature; it's part of the same one.\r\n> \r\n\r\nBluetooth Passthrough refers to our `Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED` feature.\r\n> Dolphin automatically selects its built-in Bluetooth passthrough implementation\r\n\r\nI don't think you are enabling Bluetooth Passthrough anywhere in this PR?\r\n", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 4, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T17:32:35Z', '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/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174371456', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174371456', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6174371456, 'node_id': 'IC_kwDOALCn2M8AAAABcAVugA', '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-10-14T17:32:35Z', 'updated_at': '2026-10-14T17:32:35Z', 'body': "> > I don't think this is a good idea. But also this doesn't seem to actually be implemented?\r\n> \r\n> What exactly do you mean by it not being implemented? Maybe I didn't explain that part clearly enough. It's not a separate feature; it's part of the same one.\r\n> \r\n\r\nBluetooth Passthrough refers to our `Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED` feature.\r\n> Dolphin automatically selects its built-in Bluetooth passthrough implementation\r\n\r\nI don't think you are enabling Bluetooth Passthrough anywhere in this PR?\r\n", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174371456/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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-10-14T17:20:46.429240 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'RubGarFue', 'action': 'created', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174146461', 'safe_author': False, 'body': '> I don\'t think this is a good idea. But also this doesn\'t seem to actually be implemented?\r\n\r\nWhat exactly do you mean by it not being implemented? Maybe I didn\'t explain that part clearly enough. It\'s not a separate feature; it\'s part of the same one.\r\n\r\nWhen "Automatic SDL Controller Assignment" is enabled, SDL controllers are automatically detected and assigned to the different Dolphin controller slots.\r\n\r\nThe issue with Wiimotes is that if we connect one and select its device via SDL, we lose access to the gyroscope and motion controls.\r\n\r\nThat\'s why we make an exception for Wiimotes: when a new Wiimote is detected through SDL, we select its native\'s Bluetooth passthrough profile instead. That\'s what "Automatic Bluetooth passthrough selection" refers to.\r\n', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/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-14T16:20:06Z', 'updated_at': '2026-10-14T17:20:44Z', '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/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174146461', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174146461', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6174146461, 'node_id': 'IC_kwDOALCn2M8AAAABcAH_nQ', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-14T17:20:44Z', 'updated_at': '2026-10-14T17:20:44Z', 'body': '> I don\'t think this is a good idea. But also this doesn\'t seem to actually be implemented?\r\n\r\nWhat exactly do you mean by it not being implemented? Maybe I didn\'t explain that part clearly enough. It\'s not a separate feature; it\'s part of the same one.\r\n\r\nWhen "Automatic SDL Controller Assignment" is enabled, SDL controllers are automatically detected and assigned to the different Dolphin controller slots.\r\n\r\nThe issue with Wiimotes is that if we connect one and select its device via SDL, we lose access to the gyroscope and motion controls.\r\n\r\nThat\'s why we make an exception for Wiimotes: when a new Wiimote is detected through SDL, we select its native\'s Bluetooth passthrough profile instead. That\'s what "Automatic Bluetooth passthrough selection" refers to.\r\n', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174146461/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-10-14T17:02:20.997638 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6173798014', 'safe_author': True, 'body': "I think this should be split into multiple PRs each with their own discussion.\r\n> Automatic Bluetooth passthrough selection for Wiimotes\r\n\r\nI don't think this is a good idea. But also this doesn't seem to actually be implemented?", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T17:02:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6173798014', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6173798014', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6173798014, 'node_id': 'IC_kwDOALCn2M8AAAABb_yufg', '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-10-14T17:02:18Z', 'updated_at': '2026-10-14T17:02:18Z', 'body': "I think this should be split into multiple PRs each with their own discussion.\r\n> Automatic Bluetooth passthrough selection for Wiimotes\r\n\r\nI don't think this is a good idea. But also this doesn't seem to actually be implemented?", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6173798014/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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-10-14T16:24:35.146665 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'RubGarFue', 'action': 'created', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6173057135', 'safe_author': False, 'body': 'For known limitations and other comments:\r\n\r\nhttps://forums.dolphin-emu.org/Thread-feature-request-automatic-sdl-controller-assignment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T16:24:25Z', '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/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6173057135', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6173057135', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6173057135, 'node_id': 'IC_kwDOALCn2M8AAAABb_Fgbw', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-14T16:24:24Z', 'updated_at': '2026-10-14T16:24:24Z', 'body': 'For known limitations and other comments:\r\n\r\nhttps://forums.dolphin-emu.org/Thread-feature-request-automatic-sdl-controller-assignment', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6173057135/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/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-10-15T20:57:44.751792 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14933, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'head_ref_name': 'hookable-event-better', 'safe_author': True, 'base_sha': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'head_sha': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-15T20:56:05.454833 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'edited', 'id': 14853, 'title': 'Jit: Optimize trampoline info allocation', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14853', 'head_ref_name': 'jit-trampoline-info-optimize', 'safe_author': True, 'base_sha': '562875dd60fd0ff50b65dbbb611a2096802cd1b9', 'head_sha': '4c9019d6fb53ea81e49f6ed1ffeb70c52418a300', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-15T20:38:48.702352 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'opened', 'id': 14933, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'head_ref_name': 'hookable-event-better', 'safe_author': True, 'base_sha': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'head_sha': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-15T04:37:59.349103 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'OatmealDome', 'action': 'review_requested', 'id': 14545, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'head_ref_name': 'apple-vk-sdk', 'safe_author': True, 'base_sha': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'head_sha': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'merged': False, 'requested_reviewers': [{'login': 'phire', 'id': 138484, 'node_id': 'MDQ6VXNlcjEzODQ4NA==', 'avatar_url': 'https://avatars.githubusercontent.com/u/138484?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/phire', 'html_url': 'https://github.com/phire', 'followers_url': 'https://api.github.com/users/phire/followers', 'following_url': 'https://api.github.com/users/phire/following{/other_user}', 'gists_url': 'https://api.github.com/users/phire/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/phire/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/phire/subscriptions', 'organizations_url': 'https://api.github.com/users/phire/orgs', 'repos_url': 'https://api.github.com/users/phire/repos', 'events_url': 'https://api.github.com/users/phire/events{/privacy}', 'received_events_url': 'https://api.github.com/users/phire/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, {'login': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}], 'type': 'gh_pull_request'}
2026-10-15T04:37:53.606068 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'OatmealDome', 'action': 'review_requested', 'id': 14545, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'head_ref_name': 'apple-vk-sdk', 'safe_author': True, 'base_sha': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'head_sha': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'merged': False, 'requested_reviewers': [{'login': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}], 'type': 'gh_pull_request'}
2026-10-15T04:30:38.055850 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'OatmealDome', 'action': 'synchronize', 'id': 14545, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'head_ref_name': 'apple-vk-sdk', 'safe_author': True, 'base_sha': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'head_sha': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-14T18:00:20.222578 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'RubGarFue', 'action': 'edited', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'head_ref_name': 'master', 'safe_author': False, 'base_sha': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'head_sha': 'eac451f547d4c4920a7465219c4ca41712679f31', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-10-14T16:20:08.847033 {'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'RubGarFue', 'action': 'opened', 'id': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'head_ref_name': 'master', 'safe_author': False, 'base_sha': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'head_sha': 'eac451f547d4c4920a7465219c4ca41712679f31', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
Recent 'gh_push' events
2026-10-15T03:26:28.395643 {'source': 'ghhookparser', 'repo': 'dolphin-emu/www', 'pusher': 'OatmealDome', 'before_sha': '2abcc9bb77edced307d2774566b4aa3782b29435', 'after_sha': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:17-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['dolweb/compat/migrations/0002_mediawiki_145_schema.py'], 'modified': [], 'removed': [], 'message': 'compat: Add dummy migration for MediaWiki 1.45 changes', 'url': 'https://github.com/dolphin-emu/www/commit/baa0e39e3054988450adc44c8ee6fb365e70c1ed', 'hash': 'baa0e39e3054988450adc44c8ee6fb365e70c1ed'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update everything to the latest versions that support Django 2.2 and Python 3.8', 'url': 'https://github.com/dolphin-emu/www/commit/dd30392eafc98464e8c37a76d94cdb711f0d5fbb', 'hash': 'dd30392eafc98464e8c37a76d94cdb711f0d5fbb'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update to our fork of django-blog-zinnia', 'url': 'https://github.com/dolphin-emu/www/commit/5255a775ee9cc32813fe340e47b05877fb088108', 'hash': '5255a775ee9cc32813fe340e47b05877fb088108'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/settings.py'], 'removed': [], 'message': 'settings: Remove references to outdated postgresql_psycopg2 database engine', 'url': 'https://github.com/dolphin-emu/www/commit/dc132ae7696b1ef807ce09f779007c0a0249cecf', 'hash': 'dc132ae7696b1ef807ce09f779007c0a0249cecf'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/templates/zinnia/skeleton.html', 'dolweb/blog/templates/zinnia/tags/search_form.html', 'dolweb/compat/templates/compat-list.html', 'dolweb/docs/templates/docs-guide.html', 'dolweb/homepage/templates/homepage-home.html', 'dolweb/media/templates/media-all.html', 'dolweb/templates/_base.html'], 'removed': [], 'message': 'dolweb: Update outdated references to staticfiles template tag library', 'url': 'https://github.com/dolphin-emu/www/commit/0ec44de4ccbcb0053a104633e342822a6a9e3ea9', 'hash': '0ec44de4ccbcb0053a104633e342822a6a9e3ea9'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/admin.py', 'dolweb/blog/feeds.py', 'dolweb/blog/models.py', 'dolweb/compat/templatetags/compat.py', 'dolweb/downloads/models.py'], 'removed': [], 'message': 'dolweb: Replace deprecated ugettext function', 'url': 'https://github.com/dolphin-emu/www/commit/1f32a0aa7a63fe028002a78a8e57d0d21888cb8f', 'hash': '1f32a0aa7a63fe028002a78a8e57d0d21888cb8f'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/models.py'], 'removed': [], 'message': 'blog: Replace deprecated force_text function', 'url': 'https://github.com/dolphin-emu/www/commit/3a7903635820b294477d37d11eb9baaa92e1dfbd', 'hash': '3a7903635820b294477d37d11eb9baaa92e1dfbd'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/settings.py', 'dolweb/utils/db.py'], 'removed': [], 'message': 'utils: Replace allow_syncdb with allow_migrate in WikiRouter', 'url': 'https://github.com/dolphin-emu/www/commit/4adb916f2d0523d14e4a79da3a99a64cca41f681', 'hash': '4adb916f2d0523d14e4a79da3a99a64cca41f681'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update to Django 3.0', 'url': 'https://github.com/dolphin-emu/www/commit/255cd7c4ce4b3f7b8fb001875f557a570de16dcd', 'hash': '255cd7c4ce4b3f7b8fb001875f557a570de16dcd'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/models.py'], 'removed': [], 'message': 'blog: Remove support for Textile and reStructuredText', 'url': 'https://github.com/dolphin-emu/www/commit/a6e6366a54ac77f2b6b1e45af197b7c752fa6bbb', 'hash': 'a6e6366a54ac77f2b6b1e45af197b7c752fa6bbb'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update django-blog-zinnia to commit adac9427a121b52193168f9bed75a822dcab4737', 'url': 'https://github.com/dolphin-emu/www/commit/06481477691e0ca1e2c23dc294fe6560c19fe23e', 'hash': '06481477691e0ca1e2c23dc294fe6560c19fe23e'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/settings.py'], 'removed': [], 'message': 'settings: Switch to ManifestStaticFilesStorage', 'url': 'https://github.com/dolphin-emu/www/commit/26fc2d0f461ab796afde45f2d093c44cccce0027', 'hash': '26fc2d0f461ab796afde45f2d093c44cccce0027'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/urls.py', 'dolweb/compat/urls.py', 'dolweb/docs/urls.py', 'dolweb/downloads/urls.py', 'dolweb/media/urls.py', 'dolweb/update/urls.py', 'dolweb/urls.py'], 'removed': [], 'message': 'dolweb: Replace use of django.conf.urls.url() with django.urls.re_path()', 'url': 'https://github.com/dolphin-emu/www/commit/52f84059f4b65305fb95456b55cb327b6d2b28b8', 'hash': '52f84059f4b65305fb95456b55cb327b6d2b28b8'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['dolweb/utils/locale.py'], 'modified': ['dolweb/homepage/templatetags/language.py', 'dolweb/settings.py', 'dolweb/urls.py', 'dolweb/utils/country_redirect.py'], 'removed': ['dolweb/utils/monkey.py'], 'message': 'locale: Replace monkey patching for language selection with a dedicated locale middleware', 'url': 'https://github.com/dolphin-emu/www/commit/544495f11ef4e1fa4bd50849d41630475c37579a', 'hash': '544495f11ef4e1fa4bd50849d41630475c37579a'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/downloads/diggpaginator.py'], 'removed': [], 'message': 'downloads: Remove reference to deprecated QuerySetPaginator in diggpaginator', 'url': 'https://github.com/dolphin-emu/www/commit/5f23b0a34662608491a9cef99b08d5b38af6e991', 'hash': '5f23b0a34662608491a9cef99b08d5b38af6e991'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update to Django 3.1', 'url': 'https://github.com/dolphin-emu/www/commit/d8457d82d6b0e7fa9718081dcc462fa21cca25dc', 'hash': 'd8457d82d6b0e7fa9718081dcc462fa21cca25dc'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/settings.py'], 'removed': [], 'message': 'settings: Set django.db.models.AutoField as the default auto field', 'url': 'https://github.com/dolphin-emu/www/commit/ac5f6c30645494345a51ade3f733d069776e9ef4', 'hash': 'ac5f6c30645494345a51ade3f733d069776e9ef4'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update django-blog-zinnia to commit 72545c155cc3dd5fbaf64e55c342c0fd66b7f775', 'url': 'https://github.com/dolphin-emu/www/commit/b87bb3ccded582076c4d11bc99273f4b8e629dd6', 'hash': 'b87bb3ccded582076c4d11bc99273f4b8e629dd6'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/homepage/__init__.py'], 'removed': [], 'message': 'homepage: Remove deprecated declaration of default_app_config', 'url': 'https://github.com/dolphin-emu/www/commit/11c9692735cde700496371d497f03bc57916a3b0', 'hash': '11c9692735cde700496371d497f03bc57916a3b0'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update to Django 3.2', 'url': 'https://github.com/dolphin-emu/www/commit/05bff26fd822071564de0ff9d81e440d1caaeea5', 'hash': '05bff26fd822071564de0ff9d81e440d1caaeea5'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update to Django 4.0', 'url': 'https://github.com/dolphin-emu/www/commit/669a9787927cc0b2cf3e88df15f2c9994346b41e', 'hash': '669a9787927cc0b2cf3e88df15f2c9994346b41e'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update django-blog-zinnia for Django 4.0', 'url': 'https://github.com/dolphin-emu/www/commit/b15f309a199468824c4c4f94d00225876017a38b', 'hash': 'b15f309a199468824c4c4f94d00225876017a38b'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Pin zoneinfo backport for Python 3.8', 'url': 'https://github.com/dolphin-emu/www/commit/717ac1ef6a062d65bc076744ae0a47f18651fbac', 'hash': '717ac1ef6a062d65bc076744ae0a47f18651fbac'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/templates/zinnia/entry_list.html'], 'removed': [], 'message': 'blog: Replace removed template comparison tags', 'url': 'https://github.com/dolphin-emu/www/commit/cd39329dd4142acad300119be18711cc01069dda', 'hash': 'cd39329dd4142acad300119be18711cc01069dda'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/settings.py'], 'removed': [], 'message': 'settings: Remove deprecated USE_L10N setting', 'url': 'https://github.com/dolphin-emu/www/commit/9aa801cc696bd20741ac420041f96581014c482a', 'hash': '9aa801cc696bd20741ac420041f96581014c482a'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update to Django 4.1', 'url': 'https://github.com/dolphin-emu/www/commit/c962055f8fae6867545b0f0698e44f0ac42d7e65', 'hash': 'c962055f8fae6867545b0f0698e44f0ac42d7e65'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia and debug toolbar for Django 4.1', 'url': 'https://github.com/dolphin-emu/www/commit/17e10a75b781a4914198c94ca63bee1245f3a0c6', 'hash': '17e10a75b781a4914198c94ca63bee1245f3a0c6'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update to Django 4.2', 'url': 'https://github.com/dolphin-emu/www/commit/bff8397156b0856fdb9a0c4105aa42a8f081de48', 'hash': 'bff8397156b0856fdb9a0c4105aa42a8f081de48'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia and debug toolbar for Django 4.2', 'url': 'https://github.com/dolphin-emu/www/commit/89586f3a471230e3afb362e576bfa60ddbb7e33f', 'hash': '89586f3a471230e3afb362e576bfa60ddbb7e33f'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/settings.py'], 'removed': [], 'message': 'settings: Configure file storage with STORAGES', 'url': 'https://github.com/dolphin-emu/www/commit/c6f287aba582f97b8c977d6b9ca621967c8c0014', 'hash': 'c6f287aba582f97b8c977d6b9ca621967c8c0014'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['dolweb/downloads/migrations/0006_replace_index_together.py'], 'modified': ['dolweb/downloads/models.py'], 'removed': [], 'message': 'downloads: Replace index_together with a named index', 'url': 'https://github.com/dolphin-emu/www/commit/2baf8ce5de9274f1f6266d24319f34d8042a8047', 'hash': '2baf8ce5de9274f1f6266d24319f34d8042a8047'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['dolweb/update/migrations/0003_replace_index_together.py'], 'modified': ['dolweb/update/models.py'], 'removed': [], 'message': 'update: Replace index_together with a named index', 'url': 'https://github.com/dolphin-emu/www/commit/61ca95bbbcc87ffdb7e82f28351eeaf17568bc2b', 'hash': '61ca95bbbcc87ffdb7e82f28351eeaf17568bc2b'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/downloads/migrations/0006_replace_index_together.py', 'dolweb/update/migrations/0003_replace_index_together.py'], 'removed': [], 'message': 'migrations: Discover legacy indexes instead of assuming their names', 'url': 'https://github.com/dolphin-emu/www/commit/5765cf9c4bd4c21b906f6ef9f354e8d8b697580d', 'hash': '5765cf9c4bd4c21b906f6ef9f354e8d8b697580d'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/downloads/migrations/0006_replace_index_together.py', 'dolweb/update/migrations/0003_replace_index_together.py'], 'removed': [], 'message': 'migrations: Create named indexes when legacy indexes are absent', 'url': 'https://github.com/dolphin-emu/www/commit/3869af821e95adc6605569a98db5fc141d58cb0a', 'hash': '3869af821e95adc6605569a98db5fc141d58cb0a'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['.python-version'], 'modified': ['CONTRIBUTING.md', 'shell.nix'], 'removed': [], 'message': 'project: Use Python 3.12 for development', 'url': 'https://github.com/dolphin-emu/www/commit/7ed50fbca2e88de12a73aa20757d990944b460d0', 'hash': '7ed50fbca2e88de12a73aa20757d990944b460d0'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia and dependencies for Python 3.12', 'url': 'https://github.com/dolphin-emu/www/commit/a94bb00afef56feea1554551043f611638ff6241', 'hash': 'a94bb00afef56feea1554551043f611638ff6241'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Upgrade Django to 5.0.14', 'url': 'https://github.com/dolphin-emu/www/commit/cc79cb1dd65fc17716bf8a4649714ca2b150f5d9', 'hash': 'cc79cb1dd65fc17716bf8a4649714ca2b150f5d9'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia for Django 5.0', 'url': 'https://github.com/dolphin-emu/www/commit/5033e417fcbf06436da8a0c1eef72d2fc17d5e19', 'hash': '5033e417fcbf06436da8a0c1eef72d2fc17d5e19'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/downloads/views.py'], 'removed': [], 'message': 'downloads: Default optional list page to the first page', 'url': 'https://github.com/dolphin-emu/www/commit/6d5515c1fa7403e2fdcaea45dffbf6874509bc5c', 'hash': '6d5515c1fa7403e2fdcaea45dffbf6874509bc5c'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Upgrade Django to 5.1.15', 'url': 'https://github.com/dolphin-emu/www/commit/3349622b325b3d3c06faf39563f25a52656171c5', 'hash': '3349622b325b3d3c06faf39563f25a52656171c5'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia and MPTT for Django 5.1', 'url': 'https://github.com/dolphin-emu/www/commit/7b165049e51ffd59f99261e499eb7d873df2b48a', 'hash': '7b165049e51ffd59f99261e499eb7d873df2b48a'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Upgrade Django to 5.2.18', 'url': 'https://github.com/dolphin-emu/www/commit/bc01cecdb7d090d5691889f6dc6710199c6c07f9', 'hash': 'bc01cecdb7d090d5691889f6dc6710199c6c07f9'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia for Django 5.2', 'url': 'https://github.com/dolphin-emu/www/commit/604e128c7f2d7725f67a574cf4806d5ec3554fa6', 'hash': '604e128c7f2d7725f67a574cf4806d5ec3554fa6'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['dolweb/blog/migrations/0002_move_blogseries_to_zinnia.py'], 'modified': ['dolweb/blog/admin.py', 'dolweb/blog/feeds.py', 'dolweb/blog/migrations/0001_initial.py', 'dolweb/blog/models.py', 'dolweb/blog/templatetags/blog_tags.py', 'dolweb/blog/views.py', 'dolweb/settings.py'], 'removed': [], 'message': 'blog: Move custom zinnia code into our zinnia fork', 'url': 'https://github.com/dolphin-emu/www/commit/bcb180367bea43e3d67abe54cc5ff4a16405d323', 'hash': 'bcb180367bea43e3d67abe54cc5ff4a16405d323'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['dolweb/blog/templates/zinnia/series_list.html'], 'modified': ['dolweb/blog/admin.py', 'dolweb/blog/templates/blog_sidebar.html', 'dolweb/blog/templates/zinnia/_entry_detail_base.html', 'dolweb/blog/templatetags/blog_tags.py', 'dolweb/blog/urls.py', 'dolweb/blog/views.py', 'dolweb/homepage/templates/homepage-home.html'], 'removed': ['dolweb/blog/feeds.py', 'dolweb/blog/templates/blog_chunk_series.html', 'dolweb/blog/templates/series-index.html'], 'message': 'blog: Move even more series code into our zinnia fork', 'url': 'https://github.com/dolphin-emu/www/commit/47d1cc4b242422fda1bc3ef77d237e72357fc9ba', 'hash': '47d1cc4b242422fda1bc3ef77d237e72357fc9ba'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/admin.py', 'dolweb/blog/urls.py', 'dolweb/blog/views.py', 'dolweb/settings.py'], 'removed': ['dolweb/blog/templates/etherpad-widget.html'], 'message': 'blog: Move Etherpad code to zinnia fork', 'url': 'https://github.com/dolphin-emu/www/commit/959f65ce169941979a2a6f3cc5b6d7e72a690be9', 'hash': '959f65ce169941979a2a6f3cc5b6d7e72a690be9'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/urls.py'], 'removed': ['dolweb/blog/views.py'], 'message': 'blog: Move public preview code to zinnia fork', 'url': 'https://github.com/dolphin-emu/www/commit/345b57f47aba785c1840f49650e377293a0cc3be', 'hash': '345b57f47aba785c1840f49650e377293a0cc3be'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/templates/zinnia/entry_detail_base.html'], 'removed': [], 'message': 'blog: Remove similar entries', 'url': 'https://github.com/dolphin-emu/www/commit/8a9e39a5112a0c5c74e98a1a28c06da5220c14e8', 'hash': '8a9e39a5112a0c5c74e98a1a28c06da5220c14e8'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/templates/blog_sidebar.html', 'dolweb/blog/templates/zinnia/tags/search_form.html'], 'removed': [], 'message': 'blog: Switch to Google for search backend', 'url': 'https://github.com/dolphin-emu/www/commit/504ada341e0766923d031ca496e5ac86ba890f1a', 'hash': '504ada341e0766923d031ca496e5ac86ba890f1a'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia', 'url': 'https://github.com/dolphin-emu/www/commit/879273bc0df8b21e96bea0caac3ef1b317385b3c', 'hash': '879273bc0df8b21e96bea0caac3ef1b317385b3c'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'project: Remove unnecessary dependencies', 'url': 'https://github.com/dolphin-emu/www/commit/3bb60ee505b6aa6ecb5f70fdaac10ad95105afc1', 'hash': '3bb60ee505b6aa6ecb5f70fdaac10ad95105afc1'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/downloads/admin.py', 'dolweb/update/admin.py'], 'removed': [], 'message': 'update: Sort and simplify version dropdown in release tracks admin panel', 'url': 'https://github.com/dolphin-emu/www/commit/e9570c6518e00ac13aec8b1f30ce91c4a9914641', 'hash': 'e9570c6518e00ac13aec8b1f30ce91c4a9914641'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['dolweb/admin.py'], 'modified': ['dolweb/settings.py'], 'removed': [], 'message': 'admin: Disable nav sidebar in the admin panel', 'url': 'https://github.com/dolphin-emu/www/commit/0611b1e2a72f5c51b026e0cddd96435067ea3315', 'hash': '0611b1e2a72f5c51b026e0cddd96435067ea3315'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:25-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['dolweb/blog/templates/zinnia/_entry_detail_base.html', 'dolweb/blog/templates/zinnia/entry_detail_base.html', 'dolweb/locale/ar/LC_MESSAGES/django.po', 'dolweb/locale/ast/LC_MESSAGES/django.po', 'dolweb/locale/bg/LC_MESSAGES/django.po', 'dolweb/locale/ca/LC_MESSAGES/django.po', 'dolweb/locale/cs/LC_MESSAGES/django.po', 'dolweb/locale/cy/LC_MESSAGES/django.po', 'dolweb/locale/da/LC_MESSAGES/django.po', 'dolweb/locale/da_DK/LC_MESSAGES/django.po', 'dolweb/locale/de/LC_MESSAGES/django.po', 'dolweb/locale/el/LC_MESSAGES/django.po', 'dolweb/locale/eo/LC_MESSAGES/django.po', 'dolweb/locale/es/LC_MESSAGES/django.po', 'dolweb/locale/fa/LC_MESSAGES/django.po', 'dolweb/locale/fi/LC_MESSAGES/django.po', 'dolweb/locale/fr/LC_MESSAGES/django.po', 'dolweb/locale/ga/LC_MESSAGES/django.po', 'dolweb/locale/gl/LC_MESSAGES/django.po', 'dolweb/locale/he/LC_MESSAGES/django.po', 'dolweb/locale/hi/LC_MESSAGES/django.po', 'dolweb/locale/hi_IN/LC_MESSAGES/django.po', 'dolweb/locale/hr/LC_MESSAGES/django.po', 'dolweb/locale/hu/LC_MESSAGES/django.po', 'dolweb/locale/id/LC_MESSAGES/django.po', 'dolweb/locale/is/LC_MESSAGES/django.po', 'dolweb/locale/it/LC_MESSAGES/django.po', 'dolweb/locale/ja/LC_MESSAGES/django.po', 'dolweb/locale/ko/LC_MESSAGES/django.po', 'dolweb/locale/lv/LC_MESSAGES/django.po', 'dolweb/locale/ms/LC_MESSAGES/django.po', 'dolweb/locale/ms_MY/LC_MESSAGES/django.po', 'dolweb/locale/nb/LC_MESSAGES/django.po', 'dolweb/locale/nl/LC_MESSAGES/django.po', 'dolweb/locale/pl/LC_MESSAGES/django.po', 'dolweb/locale/pt/LC_MESSAGES/django.po', 'dolweb/locale/pt_BR/LC_MESSAGES/django.po', 'dolweb/locale/ro/LC_MESSAGES/django.po', 'dolweb/locale/ro_RO/LC_MESSAGES/django.po', 'dolweb/locale/ru/LC_MESSAGES/django.po', 'dolweb/locale/sk/LC_MESSAGES/django.po', 'dolweb/locale/sl/LC_MESSAGES/django.po', 'dolweb/locale/sr/LC_MESSAGES/django.po', 'dolweb/locale/sv/LC_MESSAGES/django.po', 'dolweb/locale/template.pot', 'dolweb/locale/th/LC_MESSAGES/django.po', 'dolweb/locale/th_TH/LC_MESSAGES/django.po', 'dolweb/locale/tr/LC_MESSAGES/django.po', 'dolweb/locale/uk/LC_MESSAGES/django.po', 'dolweb/locale/vi/LC_MESSAGES/django.po', 'dolweb/locale/vi_VN/LC_MESSAGES/django.po', 'dolweb/locale/zh_CN/LC_MESSAGES/django.po', 'dolweb/locale/zh_TW/LC_MESSAGES/django.po', 'dolweb/settings.py', 'requirements.txt'], 'removed': [], 'message': 'blog: Remove all comments, discussions, pingback, and traceback support', 'url': 'https://github.com/dolphin-emu/www/commit/a8c2acc4b6ad93fff8414704c586626cb8cc4a3a', 'hash': 'a8c2acc4b6ad93fff8414704c586626cb8cc4a3a'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:25-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia', 'url': 'https://github.com/dolphin-emu/www/commit/5d30b1ade4f1429edd84a82d455541dabd4067d7', 'hash': '5d30b1ade4f1429edd84a82d455541dabd4067d7'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:18:55-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': ['dolweb/blog/migrations/0003_lowercase_tags.py'], 'modified': ['dolweb/settings.py'], 'removed': [], 'message': 'blog: Normalize all tags to lowercase', 'url': 'https://github.com/dolphin-emu/www/commit/7e90f23f95950e9c3e08a9161ef3dbc0d820fb00', 'hash': '7e90f23f95950e9c3e08a9161ef3dbc0d820fb00'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'distinct': False, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia', 'url': 'https://github.com/dolphin-emu/www/commit/7a3ea761dd3c86eb771aa250806656abd722b8f1', 'hash': '7a3ea761dd3c86eb771aa250806656abd722b8f1'}], 'base_ref_name': 'django-upgrade', 'ref_name': 'stable', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-10-14T04:53:34.714566 {'source': 'ghhookparser', 'repo': 'dolphin-emu/www', 'pusher': 'OatmealDome', 'before_sha': '5d30b1ade4f1429edd84a82d455541dabd4067d7', 'after_sha': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:18:55-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': ['dolweb/blog/migrations/0003_lowercase_tags.py'], 'modified': ['dolweb/settings.py'], 'removed': [], 'message': 'blog: Normalize all tags to lowercase', 'url': 'https://github.com/dolphin-emu/www/commit/7e90f23f95950e9c3e08a9161ef3dbc0d820fb00', 'hash': '7e90f23f95950e9c3e08a9161ef3dbc0d820fb00'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['requirements.txt'], 'removed': [], 'message': 'requirements: Update Zinnia', 'url': 'https://github.com/dolphin-emu/www/commit/7a3ea761dd3c86eb771aa250806656abd722b8f1', 'hash': '7a3ea761dd3c86eb771aa250806656abd722b8f1'}], 'base_ref_name': None, 'ref_name': 'django-upgrade', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
Recent 'internal_log' events
2026-10-15T21:08:03.562080 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'Dentomologist,Tilka,Pokechu22,phire,JosJuice,degasus,AdmiralCurtiss,iwubcode,CrossVR,OatmealDome,linkmauve,jordan-woyak,leoetlino')", 'type': 'internal_log'}
2026-10-15T21:08:02.708417 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T21:06:22.896305 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T21:06:21.021249 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T21:01:21.020559 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T21:01:19.285848 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:58:02.708112 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'Dentomologist,Tilka,Pokechu22,phire,JosJuice,degasus,AdmiralCurtiss,iwubcode,CrossVR,OatmealDome,linkmauve,jordan-woyak,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:58:02.357214 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:56:19.284823 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:56:17.525654 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:51:17.524997 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:51:15.756620 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:48:02.356871 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'Dentomologist,Tilka,Pokechu22,phire,JosJuice,degasus,AdmiralCurtiss,iwubcode,CrossVR,OatmealDome,linkmauve,jordan-woyak,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:48:02.004374 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:46:15.756050 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:46:13.998710 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:41:13.998255 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:41:12.130081 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:38:48.981534 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/buildbot.py', 'lineno': 131, 'msg': 'PR %s mergeable: %s (%s)', 'args': "(14933, None, 'unknown')", 'type': 'internal_log'}
2026-10-15T20:38:02.004063 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'Dentomologist,Tilka,Pokechu22,phire,JosJuice,degasus,AdmiralCurtiss,iwubcode,CrossVR,OatmealDome,linkmauve,jordan-woyak,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:38:01.657882 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:36:12.125751 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:36:10.505153 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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-10-15T20:31:10.504822 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'Sam-Belliveau,hrydgard,lioncash,hackbar,corwin-mcknight,mmastrac,Simonx22,ColinDTaylor,RachelBryk,jloehr,EmptyChaos,unknownbrackets,mrgreywater,Linktothepast,mimimi085181,Ziek,NanoByte011,ShimmerGlass,JordanTheToaster,Parlane,gwicks,JosJuice,sepalani,orbea,zackhow,dreamsyntax,tom-pratt,Sir-Walrus,FioraAeterna,DacoTaco,galop1n,moncefmechri,Pokechu22,zopieux,meffij,RisingFog,LPFaint99,iwubcode,jezze,JoshuaVandaele,CookiePLMonster,mathieui,mbc07,SirMangler,archshift,rukai,aldelaro5,BhaaLseN,Sintendo,crediar,kamiyo,marcan,Techjar,AdmiralCurtiss,CrossVR,OrN,Linkinworm,TellowKrinkle,spxtr,tygyh,CelestialAmber,noahpistilli,Helios747,aroulin,Tinob,yourWaifu,CasualPokePlayer,riking,phire,SuperSamus,shonumi,hthh,magcius,booto,neobrain,delroth,cscd98,Filoppi,mitaclaw,JMC47,linkmauve,rlnilsen,bentley,Stevoisiak,Starsam80,LillyJadeKatrin,nickbeth,Gamer64ytb,randomstuff,merryhime,mahdihijazi,Hydr8gon,magumagu,PatrickFerry,cristian64,Tilka,comex,Geotale,smurf3tte,MayImilae,Zopolis4,jjdelvalle,glennricster,kayru,malleoz,vladfi1,Ebola16,Orphis,hdcmeta,LAGonauta,Lobsterzelda,degasus,nullgemm,deReeperJosh,Phatcat,OatmealDome,endrift,ligfx,jordan-woyak,mandar1jn,TryTwo,K0bin,skylersaleh,Dentomologist,Buddybenj,CrystalGamma,adamdmoss,skidau,krnlyng,spycrab,leoetlino')", 'type': 'internal_log'}
2026-10-15T20:31:08.818945 {'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/801nry43pb7wc0ba2clxq82hhw3q1vnj-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'}
Recent 'issue' events
2026-10-15T15:47:33.579279 {'source': 'redmine', 'new': False, 'update': 5, 'issue': 14159, 'title': 'MLB Slugfest 20-03 Shadow Issue with certain teams', 'author': 'JosJuice', 'type': 'issue'}
2026-10-15T15:19:22.248914 {'source': 'redmine', 'new': True, 'update': 0, 'issue': 14160, 'title': '"GFX FIFO: Unknown Opcode" then a hang with dual core on AYN Odin 3 / Adreno 830 (Dolphin 2609; the FIFO warning still appears on 2609a)', 'author': 'shadow16g', 'type': 'issue'}
2026-10-15T11:22:24.215805 {'source': 'redmine', 'new': False, 'update': 4, 'issue': 14159, 'title': 'MLB Slugfest 20-03 Shadow Issue with certain teams', 'author': 'eightuser', 'type': 'issue'}
2026-10-14T18:51:12.561885 {'source': 'redmine', 'new': False, 'update': 3, 'issue': 14159, 'title': 'MLB Slugfest 20-03 Shadow Issue with certain teams', 'author': 'JosJuice', 'type': 'issue'}
2026-10-14T18:09:07.884841 {'source': 'redmine', 'new': False, 'update': 25, 'issue': 14143, 'title': "Games Can't Start Without Crashing Dolphin", 'author': 'TakahashiAkira', 'type': 'issue'}
2026-10-14T14:45:23.902198 {'source': 'redmine', 'new': False, 'update': 2, 'issue': 14159, 'title': 'MLB Slugfest 20-03 Shadow Issue with certain teams', 'author': 'eightuser', 'type': 'issue'}
2026-10-14T14:44:32.812059 {'source': 'redmine', 'new': True, 'update': 0, 'issue': 14159, 'title': 'MLB Slugfest 20-03 Shadow Issue with certain teams', 'author': 'eightuser', 'type': 'issue'}
2026-10-14T14:38:35.090256 {'source': 'redmine', 'new': False, 'update': 24, 'issue': 14143, 'title': "Games Can't Start Without Crashing Dolphin", 'author': 'TakahashiAkira', 'type': 'issue'}
2026-10-14T06:30:38.313527 {'source': 'redmine', 'new': True, 'update': 0, 'issue': 14158, 'title': "NetPlay doesn't turn off general online capabilities when running WiFi-capable games", 'author': 'Beldar4000', 'type': 'issue'}
Recent 'notification' events
2026-10-15T20:57:44.752395 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 edited pull request #14933: Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests. (\x0306master\x03...\x0306hookable-event-better\x03): \x1f\x0302https://dolp.in/pr14933\x03\x1f', 'type': 'notification'}
2026-10-15T20:57:29.554017 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14933 \x0304failed\x03 on builders [pr-osx-universal]: \x1f\x0302https://dolphin.ci/#/builders/7/builds/10763\x03\x1f', 'type': 'notification'}
2026-10-15T20:56:05.455275 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303S\ufeffuperSamus\x03 edited pull request #14853: Jit: Optimize trampoline info allocation (\x0306master\x03...\x0306jit-trampoline-info-optimize\x03): \x1f\x0302https://dolp.in/pr14853\x03\x1f', 'type': 'notification'}
2026-10-15T20:38:48.702928 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 opened pull request #14933: Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests. (\x0306master\x03...\x0306hookable-event-better\x03): \x1f\x0302https://dolp.in/pr14933\x03\x1f', 'type': 'notification'}
2026-10-15T15:47:33.579553 {'source': 'notifications', 'msg': 'Update 5 to issue 14159 ("MLB Slugfest 20-03 Shadow Issue with certain teams") by \x0303J\ufeffosJuice\x03 - \x1f\x0302https://dolp.in/i14159/5\x03\x1f', 'type': 'notification'}
2026-10-15T15:19:22.249076 {'source': 'notifications', 'msg': 'Issue 14160 created: ""GFX FIFO: Unknown Opcode" then a hang with dual core on AYN Odin 3 / Adreno 830 (Dolphin 2609; the FIFO warning still appears on 2609a)" by \x0303s\ufeffhadow16g\x03 - \x1f\x0302https://dolp.in/i14160\x03\x1f', 'type': 'notification'}
2026-10-15T11:22:24.216027 {'source': 'notifications', 'msg': 'Update 4 to issue 14159 ("MLB Slugfest 20-03 Shadow Issue with certain teams") by \x0303e\ufeffightuser\x03 - \x1f\x0302https://dolp.in/i14159/4\x03\x1f', 'type': 'notification'}
2026-10-15T09:30:40.276837 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303M\ufeffayImilae\x03 edited a comment on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6187222172\x03\x1f', 'type': 'notification'}
2026-10-15T07:54:18.230041 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303M\ufeffayImilae\x03 edited a comment on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6187222172\x03\x1f', 'type': 'notification'}
2026-10-15T07:52:23.951192 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303M\ufeffayImilae\x03 edited a comment on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6187222172\x03\x1f', 'type': 'notification'}
2026-10-15T07:50:13.699442 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303M\ufeffayImilae\x03 commented on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6187222172\x03\x1f', 'type': 'notification'}
2026-10-15T04:39:22.150397 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303O\ufeffatmealDome\x03 commented on #14545 (VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS): \x1f\x0302https://dolp.in/pr14545#issuecomment-6184548241\x03\x1f', 'type': 'notification'}
2026-10-15T04:37:59.349469 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303O\ufeffatmealDome\x03 requested a review from phire, TellowKrinkle for pull request #14545: VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS (\x0306master\x03...\x0306apple-vk-sdk\x03): \x1f\x0302https://dolp.in/pr14545\x03\x1f', 'type': 'notification'}
2026-10-15T04:37:53.606437 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303O\ufeffatmealDome\x03 requested a review from TellowKrinkle for pull request #14545: VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS (\x0306master\x03...\x0306apple-vk-sdk\x03): \x1f\x0302https://dolp.in/pr14545\x03\x1f', 'type': 'notification'}
2026-10-15T04:30:38.056636 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303O\ufeffatmealDome\x03 synchronized pull request #14545: VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS (\x0306master\x03...\x0306apple-vk-sdk\x03): \x1f\x0302https://dolp.in/pr14545\x03\x1f', 'type': 'notification'}
2026-10-15T03:26:28.395880 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/www\x1f\x03] \x0303O\ufeffatmealDome\x03 merged \x0306django-upgrade\x03 into \x0306stable\x03', 'type': 'notification'}
2026-10-14T18:51:12.562043 {'source': 'notifications', 'msg': 'Update 3 to issue 14159 ("MLB Slugfest 20-03 Shadow Issue with certain teams") by \x0303J\ufeffosJuice\x03 - \x1f\x0302https://dolp.in/i14159/3\x03\x1f', 'type': 'notification'}
2026-10-14T18:09:07.885004 {'source': 'notifications', 'msg': 'Update 25 to issue 14143 ("Games Can\'t Start Without Crashing Dolphin") by \x0303T\ufeffakahashiAkira\x03 - \x1f\x0302https://dolp.in/i14143/25\x03\x1f', 'type': 'notification'}
2026-10-14T18:00:20.222811 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303R\ufeffubGarFue\x03 edited pull request #14932: Feature: Automatic SDL Controller Assignment (\x0306master\x03...\x0306master\x03): \x1f\x0302https://dolp.in/pr14932\x03\x1f', 'type': 'notification'}
2026-10-14T17:59:21.395832 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303R\ufeffubGarFue\x03 commented on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6174877268\x03\x1f', 'type': 'notification'}
2026-10-14T17:32:38.314240 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6174371456\x03\x1f', 'type': 'notification'}
2026-10-14T17:20:46.429437 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303R\ufeffubGarFue\x03 commented on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6174146461\x03\x1f', 'type': 'notification'}
2026-10-14T17:02:20.997835 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6173798014\x03\x1f', 'type': 'notification'}
2026-10-14T16:24:35.146856 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303R\ufeffubGarFue\x03 commented on #14932 (Feature: Automatic SDL Controller Assignment): \x1f\x0302https://dolp.in/pr14932#issuecomment-6173057135\x03\x1f', 'type': 'notification'}
2026-10-14T16:20:40.156335 {'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14932 \x0304failed\x03 on builders [default]: \x1f\x0302<no url>\x03\x1f', 'type': 'notification'}
Recent 'pull_request_fifoci_status' events
2026-10-15T05:58:29.455355 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14545, 'type': 'pull_request_fifoci_status'}
2026-10-15T05:43:04.103959 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14545, 'type': 'pull_request_fifoci_status'}
2026-10-15T05:22:47.133436 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14545, 'type': 'pull_request_fifoci_status'}
2026-10-15T04:57:25.314044 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14545, 'type': 'pull_request_fifoci_status'}
2026-10-15T04:49:40.721823 {'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14545, 'type': 'pull_request_fifoci_status'}
Recent 'raw_bb_hook' events
2026-10-15T21:10:08.403600 {'source': 'webserver', 'raw': {'buildid': 192658, 'number': 10752, 'builderid': 31, 'buildrequestid': 193236, 'workerid': 4, 'masterid': 1, 'started_at': 1792098255, 'complete_at': 1792098596, 'locks_duration_s': 0, 'complete': True, 'state_string': 'failed test (failure)', 'results': 2, 'properties': {'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['c:\\buildbot\\pr-win-dbg-x64', 'Worker'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'buildnumber': [10752, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'warnings-count': [7, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 193236, 'buildsetid': 43395, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1792098255, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10752'}, 'type': 'raw_bb_hook'}
2026-10-15T21:08:12.095545 {'source': 'webserver', 'raw': {'buildid': 192657, 'number': 10744, 'builderid': 1, 'buildrequestid': 193227, 'workerid': 9, 'masterid': 1, 'started_at': 1792097624, 'complete_at': 1792098472, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'shortrev': ['73b093', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'workername': ['debian', 'Worker'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'builddir': ['/buildbot/pr-deb-dbg-x64', 'Worker'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'buildnumber': [10744, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [1, 'Builder'], 'branchname': ['pr-14933', 'Change'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'warnings-count': [2, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 193227, 'buildsetid': 43395, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1792097624, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10744'}, 'type': 'raw_bb_hook'}
2026-10-15T21:07:20.947479 {'source': 'webserver', 'raw': {'buildid': 192653, 'number': 5893, 'builderid': 43, 'buildrequestid': 193237, 'workerid': 13, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792098428, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'branch': ['refs/pull/14933/head', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-flatpak-x64', 'Builder'], 'builderid': [43, 'Builder'], 'scheduler': ['pr', 'Scheduler'], 'shortrev': ['73b093', 'Change'], 'workername': ['altair-flatpak', 'Worker'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'buildnumber': [5893, 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-x64', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13028', 'SetPropertyFromCommand Step']}, 'buildrequest': {'buildrequestid': 193237, 'buildsetid': 43395, 'builderid': 43, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/5893'}, 'type': 'raw_bb_hook'}
2026-10-15T21:04:52.451287 {'source': 'webserver', 'raw': {'buildid': 192655, 'number': 10743, 'builderid': 13, 'buildrequestid': 193232, 'workerid': 4, 'masterid': 1, 'started_at': 1792097409, 'complete_at': 1792098255, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [13, 'Builder'], 'workername': ['windows', 'Worker'], 'buildnumber': [10743, 'Build'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'shortrev': ['73b093', 'Change'], 'buildername': ['pr-win-arm64', 'Builder'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'basedir': ['c:\\buildbot', 'Worker'], 'codebase': ['', 'Build'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'build_url': ['https://dl.dolphin-emu.org/prs/ba/b3/pr-14933-dolphin-latest-arm64.7z', 'SetProperty'], 'builddir': ['c:\\buildbot\\pr-win-arm64', 'Worker'], 'warnings-count': [7, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 193232, 'buildsetid': 43395, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1792097409, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10743'}, 'type': 'raw_bb_hook'}
2026-10-15T21:04:51.800500 {'source': 'webserver', 'raw': {'buildid': 192658, 'number': 10752, 'builderid': 31, 'buildrequestid': 193236, 'workerid': 4, 'masterid': 1, 'started_at': 1792098255, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'buildername': ['pr-win-dbg-x64', 'Builder'], 'workername': ['windows', 'Worker'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [31, 'Builder'], 'buildnumber': [10752, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193236, 'buildsetid': 43395, 'builderid': 31, 'priority': 0, 'claimed': True, 'claimed_at': 1792098255, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10752'}, 'type': 'raw_bb_hook'}
2026-10-15T20:56:58.590119 {'source': 'webserver', 'raw': {'buildid': 192652, 'number': 10763, 'builderid': 7, 'buildrequestid': 193229, 'workerid': 8, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792097793, 'locks_duration_s': 0, 'complete': True, 'state_string': 'failed configure (failure)', 'results': 2, 'properties': {'shortrev': ['73b093', 'Change'], 'builderid': [7, 'Builder'], 'workername': ['osx-m1', 'Worker'], 'branchname': ['pr-14933', 'Change'], 'pr_id': [14933, 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-osx-universal', 'Builder'], 'buildnumber': [10763, 'Build'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'builddir': ['/Users/ci/worker/base/pr-osx-universal', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 193229, 'buildsetid': 43395, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10763'}, 'type': 'raw_bb_hook'}
2026-10-15T20:55:01.547370 {'source': 'webserver', 'raw': {'buildid': 192650, 'number': 5833, 'builderid': 44, 'buildrequestid': 193238, 'workerid': 14, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792097684, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'pr_id': [14933, 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'branchname': ['pr-14933', 'Change'], 'buildnumber': [5833, 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-flatpak-arm64', 'Builder'], 'workername': ['deneb-flatpak', 'Worker'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'builderid': [44, 'Builder'], 'project': ['', 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/var/lib/flatpak-worker/worker', 'Worker'], 'builddir': ['/var/lib/flatpak-worker/worker/pr-flatpak-arm64', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'fm_build_url': ['https://flat-manager.dolphin-emu.org/api/v1/build/13027', 'SetPropertyFromCommand Step']}, 'buildrequest': {'buildrequestid': 193238, 'buildsetid': 43395, 'builderid': 44, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/5833'}, 'type': 'raw_bb_hook'}
2026-10-15T20:54:25.146651 {'source': 'webserver', 'raw': {'buildid': 192657, 'number': 10744, 'builderid': 1, 'buildrequestid': 193227, 'workerid': 9, 'masterid': 1, 'started_at': 1792097624, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'shortrev': ['73b093', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'workername': ['debian', 'Worker'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'buildnumber': [10744, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [1, 'Builder'], 'branchname': ['pr-14933', 'Change']}, 'buildrequest': {'buildrequestid': 193227, 'buildsetid': 43395, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1792097624, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10744'}, 'type': 'raw_bb_hook'}
2026-10-15T20:54:24.974914 {'source': 'webserver', 'raw': {'buildid': 192651, 'number': 10743, 'builderid': 26, 'buildrequestid': 193234, 'workerid': 9, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792097624, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'builderid': [26, 'Builder'], 'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-deb-x64', 'Builder'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'project': ['', 'Build'], 'buildnumber': [10743, 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'workername': ['debian', 'Worker'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-deb-x64', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'warnings-count': [3, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 193234, 'buildsetid': 43395, 'builderid': 26, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10743'}, 'type': 'raw_bb_hook'}
2026-10-15T20:53:22.425665 {'source': 'webserver', 'raw': {'buildid': 192654, 'number': 10745, 'builderid': 27, 'buildrequestid': 193235, 'workerid': 10, 'masterid': 1, 'started_at': 1792096750, 'complete_at': 1792097571, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'branch': ['refs/pull/14933/head', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'builddir': ['/buildbot/pr-ubu-x64', 'Worker'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-ubu-x64', 'Builder'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'builderid': [27, 'Builder'], 'warnings-count': [2, 'WarningCountingShellCommand'], 'workername': ['ubuntu-lts', 'Worker'], 'buildnumber': [10745, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 193235, 'buildsetid': 43395, 'builderid': 27, 'priority': 0, 'claimed': True, 'claimed_at': 1792096750, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10745'}, 'type': 'raw_bb_hook'}
2026-10-15T20:53:20.084629 {'source': 'webserver', 'raw': {'buildid': 192656, 'number': 9411, 'builderid': 10, 'buildrequestid': 193239, 'workerid': 5, 'masterid': 1, 'started_at': 1792097571, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'pr_id': [14933, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'workername': ['altair-fifoci', 'Worker'], 'branch': ['refs/pull/14933/head', 'Build'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Trigger'], 'repository': ['', 'Build'], 'branchname': ['pr-14933', 'Trigger'], 'builderid': [10, 'Builder'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'shortrev': ['73b093', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'buildnumber': [9411, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193239, 'buildsetid': 43397, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1792097571, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792097571, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43397, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1792097571, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 192654, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, 'patch': None}]}, 'parentbuild': {'buildid': 192654, 'number': 10745, 'builderid': 27, 'buildrequestid': 193235, 'workerid': 10, 'masterid': 1, 'started_at': 1792096750, 'complete_at': 1792097571, '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/9411'}, 'type': 'raw_bb_hook'}
2026-10-15T20:52:24.023629 {'source': 'webserver', 'raw': {'buildid': 192648, 'number': 10750, 'builderid': 22, 'buildrequestid': 193233, 'workerid': 12, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792097517, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'buildername': ['pr-android', 'Builder'], 'builderid': [22, 'Builder'], 'workername': ['android', 'Worker'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10750, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14933/head', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-android', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 193233, 'buildsetid': 43395, 'builderid': 22, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10750'}, 'type': 'raw_bb_hook'}
2026-10-15T20:50:48.113469 {'source': 'webserver', 'raw': {'buildid': 192647, 'number': 10746, 'builderid': 2, 'buildrequestid': 193228, 'workerid': 4, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792097409, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-win-x64', 'Builder'], 'builderid': [2, 'Builder'], 'branchname': ['pr-14933', 'Change'], 'workername': ['windows', 'Worker'], 'buildnumber': [10746, 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'builddir': ['c:\\buildbot\\pr-win-x64', 'Worker'], 'warnings-count': [7, 'WarningCountingShellCommand'], 'build_url': ['https://dl.dolphin-emu.org/prs/14/36/pr-14933-dolphin-latest-x64.7z', 'SetProperty'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'sln_exists': ['false', 'SetPropertyFromCommand Step'], 'basedir': ['c:\\buildbot', 'Worker']}, 'buildrequest': {'buildrequestid': 193228, 'buildsetid': 43395, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10746'}, 'type': 'raw_bb_hook'}
2026-10-15T20:50:47.817637 {'source': 'webserver', 'raw': {'buildid': 192655, 'number': 10743, 'builderid': 13, 'buildrequestid': 193232, 'workerid': 4, 'masterid': 1, 'started_at': 1792097409, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [13, 'Builder'], 'workername': ['windows', 'Worker'], 'buildnumber': [10743, 'Build'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'shortrev': ['73b093', 'Change'], 'buildername': ['pr-win-arm64', 'Builder'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193232, 'buildsetid': 43395, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1792097409, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10743'}, 'type': 'raw_bb_hook'}
2026-10-15T20:42:32.635093 {'source': 'webserver', 'raw': {'buildid': 192649, 'number': 10750, 'builderid': 11, 'buildrequestid': 193231, 'workerid': 1, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792096920, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builderid': [11, 'Builder'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-freebsd-x64', 'Builder'], 'shortrev': ['73b093', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14933/head', 'Build'], 'project': ['', 'Build'], 'buildnumber': [10750, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'workername': ['freebsd', 'Worker'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'basedir': ['/usr/home/buildbot/freebsd', 'Worker'], 'builddir': ['/usr/home/buildbot/freebsd/pr-freebsd-x64', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch'], 'warnings-count': [2, 'WarningCountingShellCommand']}, 'buildrequest': {'buildrequestid': 193231, 'buildsetid': 43395, 'builderid': 11, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10750'}, 'type': 'raw_bb_hook'}
2026-10-15T20:40:25.811150 {'source': 'webserver', 'raw': {'buildid': 192646, 'number': 10748, 'builderid': 9, 'buildrequestid': 193230, 'workerid': 10, 'masterid': 1, 'started_at': 1792096740, 'complete_at': 1792096750, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['lint', 'Builder'], 'builderid': [9, 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'buildnumber': [10748, 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/lint', 'Worker'], 'got_revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 193230, 'buildsetid': 43395, 'builderid': 9, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1792096740, 'complete_at': 1792096750, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 9, 'name': 'lint', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/9/builds/10748'}, 'type': 'raw_bb_hook'}
2026-10-15T20:40:02.908948 {'source': 'webserver', 'raw': {'buildid': 192654, 'number': 10745, 'builderid': 27, 'buildrequestid': 193235, 'workerid': 10, 'masterid': 1, 'started_at': 1792096750, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'branch': ['refs/pull/14933/head', 'Build'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-ubu-x64', 'Builder'], 'builderid': [27, 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'buildnumber': [10745, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 193235, 'buildsetid': 43395, 'builderid': 27, 'priority': 0, 'claimed': True, 'claimed_at': 1792096750, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10745'}, 'type': 'raw_bb_hook'}
2026-10-15T20:39:57.944858 {'source': 'webserver', 'raw': {'buildid': 192647, 'number': 10746, 'builderid': 2, 'buildrequestid': 193228, 'workerid': 4, 'masterid': 1, 'started_at': 1792096740, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-win-x64', 'Builder'], 'builderid': [2, 'Builder'], 'branchname': ['pr-14933', 'Change'], 'workername': ['windows', 'Worker'], 'buildnumber': [10746, 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193228, 'buildsetid': 43395, 'builderid': 2, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10746'}, 'type': 'raw_bb_hook'}
2026-10-15T20:39:57.658755 {'source': 'webserver', 'raw': {'buildid': 192649, 'number': 10750, 'builderid': 11, 'buildrequestid': 193231, 'workerid': 1, 'masterid': 1, 'started_at': 1792096740, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'builderid': [11, 'Builder'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'branchname': ['pr-14933', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-freebsd-x64', 'Builder'], 'shortrev': ['73b093', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14933/head', 'Build'], 'project': ['', 'Build'], 'buildnumber': [10750, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'workername': ['freebsd', 'Worker'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 193231, 'buildsetid': 43395, 'builderid': 11, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10750'}, 'type': 'raw_bb_hook'}
2026-10-15T20:39:57.482891 {'source': 'webserver', 'raw': {'buildid': 192652, 'number': 10763, 'builderid': 7, 'buildrequestid': 193229, 'workerid': 8, 'masterid': 1, 'started_at': 1792096740, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'shortrev': ['73b093', 'Change'], 'builderid': [7, 'Builder'], 'workername': ['osx-m1', 'Worker'], 'branchname': ['pr-14933', 'Change'], 'pr_id': [14933, 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-osx-universal', 'Builder'], 'buildnumber': [10763, 'Build'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193229, 'buildsetid': 43395, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10763'}, 'type': 'raw_bb_hook'}
2026-10-15T20:39:57.130537 {'source': 'webserver', 'raw': {'buildid': 192651, 'number': 10743, 'builderid': 26, 'buildrequestid': 193234, 'workerid': 9, 'masterid': 1, 'started_at': 1792096740, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'builderid': [26, 'Builder'], 'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-deb-x64', 'Builder'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'project': ['', 'Build'], 'buildnumber': [10743, 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'repository': ['', 'Build'], 'workername': ['debian', 'Worker'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build']}, 'buildrequest': {'buildrequestid': 193234, 'buildsetid': 43395, 'builderid': 26, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10743'}, 'type': 'raw_bb_hook'}
2026-10-15T20:39:56.968358 {'source': 'webserver', 'raw': {'buildid': 192648, 'number': 10750, 'builderid': 22, 'buildrequestid': 193233, 'workerid': 12, 'masterid': 1, 'started_at': 1792096740, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'buildername': ['pr-android', 'Builder'], 'builderid': [22, 'Builder'], 'workername': ['android', 'Worker'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10750, 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14933/head', 'Build']}, 'buildrequest': {'buildrequestid': 193233, 'buildsetid': 43395, 'builderid': 22, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/10750'}, 'type': 'raw_bb_hook'}
2026-10-15T20:39:56.650281 {'source': 'webserver', 'raw': {'buildid': 192646, 'number': 10748, 'builderid': 9, 'buildrequestid': 193230, 'workerid': 10, 'masterid': 1, 'started_at': 1792096740, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'shortrev': ['73b093', 'Change'], 'pr_id': [14933, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['lint', 'Builder'], 'builderid': [9, 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'buildnumber': [10748, 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193230, 'buildsetid': 43395, 'builderid': 9, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 9, 'name': 'lint', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/9/builds/10748'}, 'type': 'raw_bb_hook'}
2026-10-15T20:39:35.568362 {'source': 'webserver', 'raw': {'buildid': 192653, 'number': 5893, 'builderid': 43, 'buildrequestid': 193237, 'workerid': 13, 'masterid': 1, 'started_at': 1792096740, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14933', 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'branch': ['refs/pull/14933/head', 'Build'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'pr_id': [14933, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-flatpak-x64', 'Builder'], 'builderid': [43, 'Builder'], 'scheduler': ['pr', 'Scheduler'], 'shortrev': ['73b093', 'Change'], 'workername': ['altair-flatpak', 'Worker'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: jordan-woyak)'], 'Build'], 'buildnumber': [5893, 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193237, 'buildsetid': 43395, 'builderid': 43, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/5893'}, 'type': 'raw_bb_hook'}
2026-10-15T20:39:35.552428 {'source': 'webserver', 'raw': {'buildid': 192650, 'number': 5833, 'builderid': 44, 'buildrequestid': 193238, 'workerid': 14, 'masterid': 1, 'started_at': 1792096740, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'pr_id': [14933, 'Change'], 'baserev': ['8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', 'Change'], 'headrev': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Change'], 'shortrev': ['73b093', 'Change'], 'branchname': ['pr-14933', 'Change'], 'buildnumber': [5833, 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-flatpak-arm64', 'Builder'], 'workername': ['deneb-flatpak', 'Worker'], 'revision': ['73b093ab3252ba58b16ee7831da8a622c7bb085f', 'Build'], 'repository': ['', 'Build'], 'builderid': [44, 'Builder'], 'project': ['', 'Build'], 'branch': ['refs/pull/14933/head', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 193238, 'buildsetid': 43395, 'builderid': 44, 'priority': 0, 'claimed': True, 'claimed_at': 1792096740, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1792096740, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 43395, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1792096740, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13038, 'branch': 'refs/pull/14933/head', 'revision': '73b093ab3252ba58b16ee7831da8a622c7bb085f', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1792096740, '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/5833'}, 'type': 'raw_bb_hook'}
Recent 'raw_gh_hook' events
2026-10-15T20:57:44.751805 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14933, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'id': 4879527125, 'node_id': 'PR_kwDOALCn2M8AAAABItes1Q', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14933.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14933.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933', 'number': 14933, 'state': 'open', 'locked': False, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', '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': 'In trying to deal with objects with complicated lifetimes I found our `HookableEvent` lacking.\r\n\r\nThere are now more behavior guarantees and possibilities.\r\n- Recursive `Trigger` works.\r\n- Disconnect within `Trigger` works and instantly destructs the callback.\r\n- Register/Connect within `Trigger` works and is *not* invoked until next `Trigger`\r\n- An `EventHook` callback can hold a `EventHook` to itself.\r\n - keeping itself alive until it wants or until the `HookableEvent` goes out of scope.\r\n\r\nThe existing `HookableEvent` -> `EventHook` system was a one-to-many relationship.\r\nIt made a particular scenario inconvenient:\r\ne.g. Some class produces many objects and wishes to connect events with them, with either the producer or the many objects going out of scope first.\r\n\r\nThe one-to-many relationship required maintaining a list of `EventHook`, manually removing them based on the instance lifetime.\r\n\r\nA new `HookHolder` class is a introduced that can hold many `EventHook`, allowing for a many-to-many relationship.\r\nThe internal container is automatically adjusted as hooks are disconnected.\r\n```cpp\r\n HookableEvent<> event;\r\n HookHolder holder;\r\n \r\n holder.Connect(event, [&] { fmt::print("triggered 1"); });\r\n \r\n WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\r\n holder.Disconnect(hook);\r\n```\r\n`HookHolder` creates a system analogous to Qt\'s `connect`.\r\nIn Qt one doesn\'t need to manually maintain a container of "hooks" to keep a `connect` active, you just derive from `QObject`.\r\nSimilarly here, now you can just have one `HookHolder`.\r\n\r\nI\'ve added a bunch of unit tests.\r\n', 'created_at': '2026-10-15T20:38:45Z', 'updated_at': '2026-10-15T20:57:41Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '3497ddcb8f60c083cb5f74a189abc8f4bb50d6b9', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933/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/14933/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/73b093ab3252ba58b16ee7831da8a622c7bb085f', 'head': {'label': 'jordan-woyak:hookable-event-better', 'ref': 'hookable-event-better', 'sha': '73b093ab3252ba58b16ee7831da8a622c7bb085f', '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-10-15T20:37:08Z', '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': 527818, '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': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', '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-10-15T16:17:49Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 482, 'watchers': 15661, '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/14933'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933/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/14933/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/73b093ab3252ba58b16ee7831da8a622c7bb085f'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 2, 'additions': 737, 'deletions': 68, 'changed_files': 3}, 'changes': {'body': {'from': 'In trying to deal with objects with complicated lifetimes I found our `HookableEvent` lacking.\n\nThere are now more behavior guarantees and possibilities.\n- Recursive `Trigger` works.\n- Disconnect within `Trigger` works and instantly destructs the callback.\n- Register/Connect within `Trigger` works and is *not* invoked until next `Trigger`\n- An `EventHook` callback can hold a `EventHook` to itself.\n - keeping itself alive until it wants or until the `HookableEvent` goes out of scope.\n\nThe existing `HookableEvent` -> `EventHook` system was a one-to-many relationship.\nIt made a particular scenario inconvenient:\ne.g. Some class produces many objects and wishes to connect events with them, with either the producer or the many objects going out of scope first.\n\nThe one-to-many relationship required maintaining a list of `EventHook`, manually removing them based on the instance lifetime.\n\nA new `HookHolder` class is a introduced that can hold many `EventHook`, allowing for a many-to-many relationship.\nThe internal container is automatically adjusted as hooks are disconnected.\n```cpp\n HookableEvent<> event;\n HookHolder holder;\n \n holder.Connect(event, [&] { fmt::print("triggered 1"); });\n \n WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n holder.Disconnect(hook);\n```\n\nI\'ve added a bunch of unit tests.\n'}}, '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-10-15T16:17:49Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 482, 'watchers': 15661, '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-10-15T20:56:05.454846 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14853, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14853', 'id': 4467080565, 'node_id': 'PR_kwDOALCn2M8AAAABCkI9dQ', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14853', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14853.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14853.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14853', 'number': 14853, 'state': 'open', 'locked': False, 'title': 'Jit: Optimize trampoline info allocation', '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}, 'body': 'Tested pausing and unpausing repeatedly in NBA Live 2005.\r\n\r\nBefore:\r\n<img width="1104" height="557" alt="JIT_before" src="https://github.com/user-attachments/assets/8fbc5d69-656c-4416-8b37-db4fa376de94" />\r\n\r\nAfter:\r\n<img width="1104" height="557" alt="JIT_after_trampoline_optimization" src="https://github.com/user-attachments/assets/51eab767-b079-47fd-a54f-9574f2a7d5ca" />\r\n\r\nAs you can see, the slowest function (allocating to the trampoline info map) is just gone from the profiling, and the improvement is noticeable.\r\n(And if MMU was enabled, then there would also be another hashmap. So, double the improvements for MMU titles.)\r\n\r\n~~ARM is untested.~~ ARM tested by @Hibyehello.\r\n\r\n<super><sub>MovInfo::address is now unused, should it be removed from the struct?</sub></super>', 'created_at': '2026-09-07T19:03:33Z', 'updated_at': '2026-10-15T20:56:02Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'e4f9aaf95783604fe7e1aee3484fcfdf986de3b6', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14853/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14853/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/14853/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/4c9019d6fb53ea81e49f6ed1ffeb70c52418a300', 'head': {'label': 'SuperSamus:jit-trampoline-info-optimize', 'ref': 'jit-trampoline-info-optimize', 'sha': '4c9019d6fb53ea81e49f6ed1ffeb70c52418a300', '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}, 'repo': {'id': 622923789, 'node_id': 'R_kgDOJSEQDQ', 'name': 'dolphin', 'full_name': 'SuperSamus/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/SuperSamus/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/SuperSamus/dolphin', 'forks_url': 'https://api.github.com/repos/SuperSamus/dolphin/forks', 'keys_url': 'https://api.github.com/repos/SuperSamus/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/SuperSamus/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/SuperSamus/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/SuperSamus/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/SuperSamus/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/SuperSamus/dolphin/events', 'assignees_url': 'https://api.github.com/repos/SuperSamus/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/SuperSamus/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/SuperSamus/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/SuperSamus/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/SuperSamus/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/SuperSamus/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/SuperSamus/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/SuperSamus/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/SuperSamus/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/SuperSamus/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/SuperSamus/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/SuperSamus/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/SuperSamus/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/SuperSamus/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/SuperSamus/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/SuperSamus/dolphin/merges', 'archive_url': 'https://api.github.com/repos/SuperSamus/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/SuperSamus/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/SuperSamus/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/SuperSamus/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/SuperSamus/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/SuperSamus/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/SuperSamus/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/SuperSamus/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/SuperSamus/dolphin/deployments', 'created_at': '2023-04-03T10:43:10Z', 'updated_at': '2026-10-12T12:18:42Z', 'pushed_at': '2026-10-15T08:28:57Z', 'git_url': 'git://github.com/SuperSamus/dolphin.git', 'ssh_url': 'git@github.com:SuperSamus/dolphin.git', 'clone_url': 'https://github.com/SuperSamus/dolphin.git', 'svn_url': 'https://github.com/SuperSamus/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 518655, 'stargazers_count': 0, 'watchers_count': 0, 'language': 'C++', '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': '562875dd60fd0ff50b65dbbb611a2096802cd1b9', '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-10-15T16:17:49Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 482, 'watchers': 15661, '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/14853'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14853'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14853'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14853/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14853/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/14853/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/4c9019d6fb53ea81e49f6ed1ffeb70c52418a300'}}, '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': 2, 'review_comments': 11, 'maintainer_can_modify': True, 'commits': 2, 'additions': 154, 'deletions': 91, 'changed_files': 8}, 'changes': {'body': {'from': 'Tested pausing and unpausing repeatedly in NBA Live 2005.\r\n\r\nBefore:\r\n<img width="1104" height="557" alt="JIT_before" src="https://github.com/user-attachments/assets/8fbc5d69-656c-4416-8b37-db4fa376de94" />\r\n\r\nAfter:\r\n<img width="1104" height="557" alt="JIT_after_trampoline_optimization" src="https://github.com/user-attachments/assets/51eab767-b079-47fd-a54f-9574f2a7d5ca" />\r\n\r\nAs you can see, the slowest function (allocating to the trampoline info map) is just gone from the profiling, and the improvement is noticeable.\r\n(And if MMU was enabled, then there would also be another hashmap. So, double the improvements for MMU titles.)\r\n\r\nARM is untested.\r\n\r\n<super><sub>MovInfo::address is now unused, should it be removed from the struct?</sub></super>'}}, '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-10-15T16:17:49Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 482, 'watchers': 15661, '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': 'raw_gh_hook'}
2026-10-15T20:38:48.702360 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 14933, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933', 'id': 4879527125, 'node_id': 'PR_kwDOALCn2M8AAAABItes1Q', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14933', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14933.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14933.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933', 'number': 14933, 'state': 'open', 'locked': False, 'title': ' Common: Rewrite HookableEvent. More features. Better behavioral guarantees. Unit tests.', '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': 'In trying to deal with objects with complicated lifetimes I found our `HookableEvent` lacking.\n\nThere are now more behavior guarantees and possibilities.\n- Recursive `Trigger` works.\n- Disconnect within `Trigger` works and instantly destructs the callback.\n- Register/Connect within `Trigger` works and is *not* invoked until next `Trigger`\n- An `EventHook` callback can hold a `EventHook` to itself.\n - keeping itself alive until it wants or until the `HookableEvent` goes out of scope.\n\nThe existing `HookableEvent` -> `EventHook` system was a one-to-many relationship.\nIt made a particular scenario inconvenient:\ne.g. Some class produces many objects and wishes to connect events with them, with either the producer or the many objects going out of scope first.\n\nThe one-to-many relationship required maintaining a list of `EventHook`, manually removing them based on the instance lifetime.\n\nA new `HookHolder` class is a introduced that can hold many `EventHook`, allowing for a many-to-many relationship.\nThe internal container is automatically adjusted as hooks are disconnected.\n```cpp\n HookableEvent<> event;\n HookHolder holder;\n \n holder.Connect(event, [&] { fmt::print("triggered 1"); });\n \n WeakEventHook hook = holder.Connect(event, [&] { fmt::print("triggered 2"); });\n holder.Disconnect(hook);\n```\n\nI\'ve added a bunch of unit tests.\n', 'created_at': '2026-10-15T20:38:45Z', 'updated_at': '2026-10-15T20:38:45Z', '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/14933/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933/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/14933/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/73b093ab3252ba58b16ee7831da8a622c7bb085f', 'head': {'label': 'jordan-woyak:hookable-event-better', 'ref': 'hookable-event-better', 'sha': '73b093ab3252ba58b16ee7831da8a622c7bb085f', '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-10-15T20:37:08Z', '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': 527818, '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': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', '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-10-15T16:17:49Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 482, 'watchers': 15661, '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/14933'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14933'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14933/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14933/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/14933/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/73b093ab3252ba58b16ee7831da8a622c7bb085f'}}, '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': 737, 'deletions': 68, 'changed_files': 3}, '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-10-15T16:17:49Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 482, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 482, 'watchers': 15661, '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-10-15T09:30:40.276656 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'edited', 'changes': {'body': {'from': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this change, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case? Do you think it's out of scope?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-15T07:54:15Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/reactions', 'total_count': 1, '+1': 1, '-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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6187222172, 'node_id': 'IC_kwDOALCn2M8AAAABcMmEnA', 'user': {'login': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T07:50:11Z', 'updated_at': '2026-10-15T09:30:38Z', 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this change, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case? Do you think it's out of scope?\r\n\r\nFinally, forgive me if I'm wrong, but there is a lot about how your post is structured that smells like AI. That's fine, our project has no issue with LLM use in this part of our code, as this doesn't touch any emulation bits. Buuut I and many other developers would appreciate a clear disclosure of any LLM use.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172/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-10-15T06:38:48Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15661, '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': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-15T07:54:18.229865 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'edited', 'changes': {'body': {'from': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-15T07:54:15Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/reactions', 'total_count': 1, '+1': 1, '-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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6187222172, 'node_id': 'IC_kwDOALCn2M8AAAABcMmEnA', 'user': {'login': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T07:50:11Z', 'updated_at': '2026-10-15T07:54:15Z', 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this change, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case? Do you think it's out of scope?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172/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-10-15T06:38:48Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15661, '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': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-15T07:52:23.951000 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'edited', 'changes': {'body': {'from': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than go on and on about all the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting to individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nThis PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's a TON of games, and you don't seem to be doing anything with them at all. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this."}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-15T07:50:11Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/reactions', 'total_count': 1, '+1': 1, '-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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6187222172, 'node_id': 'IC_kwDOALCn2M8AAAABcMmEnA', 'user': {'login': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T07:50:11Z', 'updated_at': '2026-10-15T07:52:22Z', 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than talk about the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting for individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nSo, red flag, this PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's hundreds and hundreds of games, and you don't seem to be doing anything with them at all, so they just won't work with this. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172/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-10-15T06:38:48Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15661, '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': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-15T07:50:13.699212 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-15T07:50:11Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/reactions', 'total_count': 1, '+1': 1, '-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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6187222172', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6187222172, 'node_id': 'IC_kwDOALCn2M8AAAABcMmEnA', 'user': {'login': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T07:50:11Z', 'updated_at': '2026-10-15T07:50:11Z', 'body': "So, there are many reasons why default mapping hasn't been implement for Wii Remotes. Rather than go on and on about all the previous discussions and attempts, I'll focus on what I can find looking at the code in this PR specifically.\r\n\r\nA typical Playstation-style layout controller doesn't map well to the Wii Remote. They are different shapes, obviously, and how close we can get to the Wii Remote the less work we will have to do adapting to individual games. I'll assume our host controller is an Playstation/Xbox style controller (such as a dual sense) throughout this.\r\n\r\nThis PR doesn't try to replicate the mapping of the Wii Remote at all. For example:\r\n\r\n> Buttons/A = `Button S`\r\n> Buttons/B = `Button E`\r\n> Buttons/1 = `Button W`\r\n> Buttons/2 = `Button N`\r\n\r\n> Nunchuk/Buttons/C = `Trigger L`\r\n> Nunchuk/Buttons/Z = `Trigger R`\r\n\r\nThis doesn't even remotely try to match what a Wii Remote is doing. You could map Wii Remote A to Host A and Wii Remote B to Host Trigger R, as that is where they are on the Wii Remote and that similar mapping is possible on a host Controller. That will significantly improve the feel of shooter games that use B to fire, and any game that uses B basically at all. That then allows the Nunchuk Z and C to go on Host Trigger L and Host Bumper L, again more closely matching the Wii Remote. Anyone mapping the Wii Remote + Nunchuk to a Playstation-layout controller would see that as an obvious route.\r\n\r\nWhat about games that use the Wii Remote sideways? That's a TON of games, and you don't seem to be doing anything with them at all. \r\n\r\nWhat about games that use the lower Dpad button for extra buttons or as a chord? The Metroid Prime games in particular do this, but lots others do it to as it's quite comfy on the Wii Remote. Having the Wii Remote dpad on the host dpad certainly wouldn't make super missiles comfy! An idea setup would be to put an additional wii remote dpad down onto a face button to handle these games.\r\n\r\nDeadzones are hard-coded, and there is no calibration whatsoever. Assuming I'm reading this right, you lock those out when this mode is engaged, so users can't even calibrate after the fact.\r\n\r\nSpeaking of which, I imagine a lot of players will want to customize after the fact. Can users turn this setting off and customize the mappings?\r\n\r\nYou don't utilize our notch emulation. The Nunchuk uses notches, and it would be pretty easy to replicate with our existing notch emulation, that's an easy improvement.\r\n\r\nMapping the Wii Remote Home Button to Host Guide is extremely problematic. The Xbox Game Bar, Steam, and other apps are competing with eachother for this button, there is little room for us to use it.\r\n\r\nYou appear to have no emulation of nunchuk motion whatsoever. That breaks... at least a thousand games.\r\n\r\nThe biggest issue however, is the Xbox controller. This mapping uses the host controller's gyro and accelerometer for the Wii Remote motion. If the host controller doesn't have motion controls at all... the majority of the Wii library will be unplayable on Xbox controllers. Of course, that is a really, REALLY hard problem, and you could argue that this is out of scope for this PR, but that alone means this can never be a default option (which is it not, I would have said something well before now if so). But yea, Xbox controllers and controllers without motion still exist and that alone has shot down many attempts at default wii remote mapping in the past. How do you intend to handle that case?\r\n\r\nFinally, there is no issue using an LLM for this part of the code, but I and many other developers would definitely prefer a clear disclosure on how you are using an LLM for this.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6187222172/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-10-15T06:38:48Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15661, 'watchers_count': 15661, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15661, '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': 'MayImilae', 'id': 6551020, 'node_id': 'MDQ6VXNlcjY1NTEwMjA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6551020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/MayImilae', 'html_url': 'https://github.com/MayImilae', 'followers_url': 'https://api.github.com/users/MayImilae/followers', 'following_url': 'https://api.github.com/users/MayImilae/following{/other_user}', 'gists_url': 'https://api.github.com/users/MayImilae/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/MayImilae/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/MayImilae/subscriptions', 'organizations_url': 'https://api.github.com/users/MayImilae/orgs', 'repos_url': 'https://api.github.com/users/MayImilae/repos', 'events_url': 'https://api.github.com/users/MayImilae/events{/privacy}', 'received_events_url': 'https://api.github.com/users/MayImilae/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-15T04:39:22.150206 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'id': 4198171870, 'node_id': 'PR_kwDOALCn2M7PuCj3', 'number': 14545, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'user': {'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}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-04-03T03:59:53Z', 'updated_at': '2026-10-15T04:39:19Z', '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/14545', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.patch', 'merged_at': None}, 'body': "Follow-up to #14492.\r\n\r\nThis allows us to drop our custom MoltenVK and switch to one that is pre-built. I've installed SDK `1.4.341.1` on the build machine.\r\n\r\nI've also added support for KosmicKrisp in this PR, but I'll probably make it off-by-default before merging to avoid confusing users. I just wanted to have the CI create a build with KosmicKrisp enabled.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/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/14545/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6184548241', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545#issuecomment-6184548241', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545', 'id': 6184548241, 'node_id': 'IC_kwDOALCn2M8AAAABcKC3kQ', 'user': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-15T04:39:19Z', 'updated_at': '2026-10-15T04:39:19Z', 'body': "OK, I've made it so that it requires the LunarG SDK instead of just using any Vulkan SDK it finds. I've also added a loader flag so that it doesn't search for Vulkan drivers outside of the app bundle when running under DolphinQt.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6184548241/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-10-15T03:38:30Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15660, 'watchers_count': 15660, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15660, '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-10-15T04:37:59.349113 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'review_requested', 'number': 14545, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545', 'id': 3484952823, 'node_id': 'PR_kwDOALCn2M7PuCj3', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545', 'number': 14545, 'state': 'open', 'locked': False, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'user': {'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}, 'body': "Follow-up to #14492.\r\n\r\nThis allows us to drop our custom MoltenVK and switch to one that is pre-built. I've installed SDK `1.4.341.1` on the build machine.\r\n\r\nI've also added support for KosmicKrisp in this PR, but I'll probably make it off-by-default before merging to avoid confusing users. I just wanted to have the CI create a build with KosmicKrisp enabled.", 'created_at': '2026-04-03T03:59:53Z', 'updated_at': '2026-10-15T04:37:57Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '3452a69efb449698fc33e7ab477badfdef11e2bf', 'assignees': [], 'requested_reviewers': [{'login': 'phire', 'id': 138484, 'node_id': 'MDQ6VXNlcjEzODQ4NA==', 'avatar_url': 'https://avatars.githubusercontent.com/u/138484?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/phire', 'html_url': 'https://github.com/phire', 'followers_url': 'https://api.github.com/users/phire/followers', 'following_url': 'https://api.github.com/users/phire/following{/other_user}', 'gists_url': 'https://api.github.com/users/phire/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/phire/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/phire/subscriptions', 'organizations_url': 'https://api.github.com/users/phire/orgs', 'repos_url': 'https://api.github.com/users/phire/repos', 'events_url': 'https://api.github.com/users/phire/events{/privacy}', 'received_events_url': 'https://api.github.com/users/phire/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, {'login': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/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/14545/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c8267b229c95e0ecf9f6b829c6570e033e012a33', 'head': {'label': 'OatmealDome:apple-vk-sdk', 'ref': 'apple-vk-sdk', 'sha': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'user': {'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}, 'repo': {'id': 32332945, 'node_id': 'MDEwOlJlcG9zaXRvcnkzMjMzMjk0NQ==', 'name': 'dolphin', 'full_name': 'OatmealDome/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/OatmealDome/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/OatmealDome/dolphin', 'forks_url': 'https://api.github.com/repos/OatmealDome/dolphin/forks', 'keys_url': 'https://api.github.com/repos/OatmealDome/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/OatmealDome/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/OatmealDome/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/OatmealDome/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/OatmealDome/dolphin/events', 'assignees_url': 'https://api.github.com/repos/OatmealDome/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/OatmealDome/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/OatmealDome/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/OatmealDome/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/OatmealDome/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/OatmealDome/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/OatmealDome/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/OatmealDome/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/OatmealDome/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/OatmealDome/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/OatmealDome/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/OatmealDome/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/OatmealDome/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/OatmealDome/dolphin/merges', 'archive_url': 'https://api.github.com/repos/OatmealDome/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/OatmealDome/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/OatmealDome/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/OatmealDome/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/OatmealDome/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/OatmealDome/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/OatmealDome/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/OatmealDome/dolphin/deployments', 'created_at': '2015-03-16T15:05:49Z', 'updated_at': '2026-09-08T11:49:03Z', 'pushed_at': '2026-10-15T04:30:35Z', 'git_url': 'git://github.com/OatmealDome/dolphin.git', 'ssh_url': 'git@github.com:OatmealDome/dolphin.git', 'clone_url': 'https://github.com/OatmealDome/dolphin.git', 'svn_url': 'https://github.com/OatmealDome/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 690329, 'stargazers_count': 264, 'watchers_count': 264, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 31, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': None, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 31, 'open_issues': 0, 'watchers': 264, 'default_branch': 'ios-jb', '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': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', '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-10-15T03:38:30Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15660, 'watchers_count': 15660, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15660, '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/14545'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14545'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/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/14545/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c8267b229c95e0ecf9f6b829c6570e033e012a33'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 7, 'review_comments': 1, 'maintainer_can_modify': True, 'commits': 6, 'additions': 116, 'deletions': 303, 'changed_files': 11}, 'requested_reviewer': {'login': 'phire', 'id': 138484, 'node_id': 'MDQ6VXNlcjEzODQ4NA==', 'avatar_url': 'https://avatars.githubusercontent.com/u/138484?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/phire', 'html_url': 'https://github.com/phire', 'followers_url': 'https://api.github.com/users/phire/followers', 'following_url': 'https://api.github.com/users/phire/following{/other_user}', 'gists_url': 'https://api.github.com/users/phire/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/phire/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/phire/subscriptions', 'organizations_url': 'https://api.github.com/users/phire/orgs', 'repos_url': 'https://api.github.com/users/phire/repos', 'events_url': 'https://api.github.com/users/phire/events{/privacy}', 'received_events_url': 'https://api.github.com/users/phire/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, '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-10-15T03:38:30Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15660, 'watchers_count': 15660, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15660, '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-10-15T04:37:53.606079 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'review_requested', 'number': 14545, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545', 'id': 3484952823, 'node_id': 'PR_kwDOALCn2M7PuCj3', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545', 'number': 14545, 'state': 'open', 'locked': False, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'user': {'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}, 'body': "Follow-up to #14492.\r\n\r\nThis allows us to drop our custom MoltenVK and switch to one that is pre-built. I've installed SDK `1.4.341.1` on the build machine.\r\n\r\nI've also added support for KosmicKrisp in this PR, but I'll probably make it off-by-default before merging to avoid confusing users. I just wanted to have the CI create a build with KosmicKrisp enabled.", 'created_at': '2026-04-03T03:59:53Z', 'updated_at': '2026-10-15T04:37:52Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '3452a69efb449698fc33e7ab477badfdef11e2bf', 'assignees': [], 'requested_reviewers': [{'login': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/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/14545/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c8267b229c95e0ecf9f6b829c6570e033e012a33', 'head': {'label': 'OatmealDome:apple-vk-sdk', 'ref': 'apple-vk-sdk', 'sha': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'user': {'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}, 'repo': {'id': 32332945, 'node_id': 'MDEwOlJlcG9zaXRvcnkzMjMzMjk0NQ==', 'name': 'dolphin', 'full_name': 'OatmealDome/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/OatmealDome/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/OatmealDome/dolphin', 'forks_url': 'https://api.github.com/repos/OatmealDome/dolphin/forks', 'keys_url': 'https://api.github.com/repos/OatmealDome/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/OatmealDome/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/OatmealDome/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/OatmealDome/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/OatmealDome/dolphin/events', 'assignees_url': 'https://api.github.com/repos/OatmealDome/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/OatmealDome/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/OatmealDome/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/OatmealDome/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/OatmealDome/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/OatmealDome/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/OatmealDome/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/OatmealDome/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/OatmealDome/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/OatmealDome/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/OatmealDome/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/OatmealDome/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/OatmealDome/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/OatmealDome/dolphin/merges', 'archive_url': 'https://api.github.com/repos/OatmealDome/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/OatmealDome/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/OatmealDome/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/OatmealDome/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/OatmealDome/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/OatmealDome/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/OatmealDome/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/OatmealDome/dolphin/deployments', 'created_at': '2015-03-16T15:05:49Z', 'updated_at': '2026-09-08T11:49:03Z', 'pushed_at': '2026-10-15T04:30:35Z', 'git_url': 'git://github.com/OatmealDome/dolphin.git', 'ssh_url': 'git@github.com:OatmealDome/dolphin.git', 'clone_url': 'https://github.com/OatmealDome/dolphin.git', 'svn_url': 'https://github.com/OatmealDome/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 690329, 'stargazers_count': 264, 'watchers_count': 264, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 31, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': None, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 31, 'open_issues': 0, 'watchers': 264, 'default_branch': 'ios-jb', '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': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', '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-10-15T03:38:30Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15660, 'watchers_count': 15660, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15660, '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/14545'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14545'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/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/14545/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c8267b229c95e0ecf9f6b829c6570e033e012a33'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 7, 'review_comments': 1, 'maintainer_can_modify': True, 'commits': 6, 'additions': 116, 'deletions': 303, 'changed_files': 11}, 'requested_reviewer': {'login': 'TellowKrinkle', 'id': 3315070, 'node_id': 'MDQ6VXNlcjMzMTUwNzA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/3315070?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/TellowKrinkle', 'html_url': 'https://github.com/TellowKrinkle', 'followers_url': 'https://api.github.com/users/TellowKrinkle/followers', 'following_url': 'https://api.github.com/users/TellowKrinkle/following{/other_user}', 'gists_url': 'https://api.github.com/users/TellowKrinkle/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/TellowKrinkle/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/TellowKrinkle/subscriptions', 'organizations_url': 'https://api.github.com/users/TellowKrinkle/orgs', 'repos_url': 'https://api.github.com/users/TellowKrinkle/repos', 'events_url': 'https://api.github.com/users/TellowKrinkle/events{/privacy}', 'received_events_url': 'https://api.github.com/users/TellowKrinkle/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, '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-10-15T03:38:30Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15660, 'watchers_count': 15660, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15660, '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-10-15T04:30:38.055858 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'synchronize', 'number': 14545, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545', 'id': 3484952823, 'node_id': 'PR_kwDOALCn2M7PuCj3', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14545', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14545.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545', 'number': 14545, 'state': 'open', 'locked': False, 'title': 'VideoBackends/Vulkan: Use Vulkan loader and MoltenVK from Vulkan SDK on macOS', 'user': {'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}, 'body': "Follow-up to #14492.\r\n\r\nThis allows us to drop our custom MoltenVK and switch to one that is pre-built. I've installed SDK `1.4.341.1` on the build machine.\r\n\r\nI've also added support for KosmicKrisp in this PR, but I'll probably make it off-by-default before merging to avoid confusing users. I just wanted to have the CI create a build with KosmicKrisp enabled.", 'created_at': '2026-04-03T03:59:53Z', 'updated_at': '2026-10-15T04:30:36Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'f50c14bace5723859e4d4118c95730db1ab8c174', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/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/14545/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c8267b229c95e0ecf9f6b829c6570e033e012a33', 'head': {'label': 'OatmealDome:apple-vk-sdk', 'ref': 'apple-vk-sdk', 'sha': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', 'user': {'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}, 'repo': {'id': 32332945, 'node_id': 'MDEwOlJlcG9zaXRvcnkzMjMzMjk0NQ==', 'name': 'dolphin', 'full_name': 'OatmealDome/dolphin', 'private': False, 'owner': {'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}, 'html_url': 'https://github.com/OatmealDome/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/OatmealDome/dolphin', 'forks_url': 'https://api.github.com/repos/OatmealDome/dolphin/forks', 'keys_url': 'https://api.github.com/repos/OatmealDome/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/OatmealDome/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/OatmealDome/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/OatmealDome/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/OatmealDome/dolphin/events', 'assignees_url': 'https://api.github.com/repos/OatmealDome/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/OatmealDome/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/OatmealDome/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/OatmealDome/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/OatmealDome/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/OatmealDome/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/OatmealDome/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/OatmealDome/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/OatmealDome/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/OatmealDome/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/OatmealDome/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/OatmealDome/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/OatmealDome/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/OatmealDome/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/OatmealDome/dolphin/merges', 'archive_url': 'https://api.github.com/repos/OatmealDome/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/OatmealDome/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/OatmealDome/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/OatmealDome/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/OatmealDome/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/OatmealDome/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/OatmealDome/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/OatmealDome/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/OatmealDome/dolphin/deployments', 'created_at': '2015-03-16T15:05:49Z', 'updated_at': '2026-09-08T11:49:03Z', 'pushed_at': '2026-10-15T04:30:35Z', 'git_url': 'git://github.com/OatmealDome/dolphin.git', 'ssh_url': 'git@github.com:OatmealDome/dolphin.git', 'clone_url': 'https://github.com/OatmealDome/dolphin.git', 'svn_url': 'https://github.com/OatmealDome/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 690329, 'stargazers_count': 264, 'watchers_count': 264, 'language': None, 'has_issues': False, 'has_projects': True, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 31, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': None, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 31, 'open_issues': 0, 'watchers': 264, 'default_branch': 'ios-jb', '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': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', '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-10-15T03:38:30Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15660, 'watchers_count': 15660, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15660, '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/14545'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14545'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14545/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14545/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/14545/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/c8267b229c95e0ecf9f6b829c6570e033e012a33'}}, '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': 7, 'review_comments': 1, 'maintainer_can_modify': True, 'commits': 6, 'additions': 116, 'deletions': 303, 'changed_files': 11}, 'before': '43ab1c7360b17102104e233a2272249760d9be49', 'after': 'c8267b229c95e0ecf9f6b829c6570e033e012a33', '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-10-15T03:38:30Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15660, 'watchers_count': 15660, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3316, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3316, 'open_issues': 481, 'watchers': 15660, '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-10-15T03:27:25.537678 {'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'completed', 'check_run': {'id': 116230523080, 'name': 'update-pip-graph', 'node_id': 'CR_kwDOALAOP88AAAAbD-EIyA', 'head_sha': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'external_id': '059ec17e-d99f-5791-9081-d24806bc855b', 'url': 'https://api.github.com/repos/dolphin-emu/www/check-runs/116230523080', 'html_url': 'https://github.com/dolphin-emu/www/actions/runs/38676281133/job/116230523080', 'details_url': 'https://github.com/dolphin-emu/www/actions/runs/38676281133/job/116230523080', 'status': 'completed', 'conclusion': 'success', 'started_at': '2026-10-15T03:26:39Z', 'completed_at': '2026-10-15T03:27:23Z', 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 1, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/www/check-runs/116230523080/annotations'}, 'check_suite': {'id': 104806197795, 'node_id': 'CS_kwDOALAOP88AAAAYZu-qIw', 'head_branch': 'stable', 'head_sha': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'status': 'completed', 'conclusion': 'success', 'url': 'https://api.github.com/repos/dolphin-emu/www/check-suites/104806197795', 'before': '5d30b1ade4f1429edd84a82d455541dabd4067d7', 'after': '7a3ea761dd3c86eb771aa250806656abd722b8f1', '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-10-15T03:26:32Z', 'updated_at': '2026-10-15T03:27:24Z'}, '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': 11537983, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTUzNzk4Mw==', 'name': 'www', 'full_name': 'dolphin-emu/www', '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/www', 'description': 'Dolphin Emulator official website source code (running on https://dolphin-emu.org/)', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/www', 'forks_url': 'https://api.github.com/repos/dolphin-emu/www/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/www/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/www/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/www/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/www/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/www/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/www/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/www/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/www/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/www/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/www/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/www/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/www/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/www/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/www/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/www/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/www/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/www/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/www/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/www/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/www/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/www/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/www/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/www/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/www/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/www/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/www/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/www/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/www/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/www/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/www/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/www/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/www/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/www/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/www/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/www/deployments', 'created_at': '2013-07-19T21:56:54Z', 'updated_at': '2026-10-15T03:26:34Z', 'pushed_at': '2026-10-15T03:26:25Z', 'git_url': 'git://github.com/dolphin-emu/www.git', 'ssh_url': 'git@github.com:dolphin-emu/www.git', 'clone_url': 'https://github.com/dolphin-emu/www.git', 'svn_url': 'https://github.com/dolphin-emu/www', 'homepage': None, 'size': 3314, 'stargazers_count': 163, 'watchers_count': 163, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 75, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 29, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 75, 'open_issues': 29, 'watchers': 163, 'default_branch': 'stable', '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-10-15T03:26:38.106883 {'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'created', 'check_run': {'id': 116230523080, 'name': 'update-pip-graph', 'node_id': 'CR_kwDOALAOP88AAAAbD-EIyA', 'head_sha': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'external_id': '059ec17e-d99f-5791-9081-d24806bc855b', 'url': 'https://api.github.com/repos/dolphin-emu/www/check-runs/116230523080', 'html_url': 'https://github.com/dolphin-emu/www/actions/runs/38676281133/job/116230523080', 'details_url': 'https://github.com/dolphin-emu/www/actions/runs/38676281133/job/116230523080', 'status': 'queued', 'conclusion': None, 'started_at': '2026-10-15T03:26:36Z', 'completed_at': None, 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 0, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/www/check-runs/116230523080/annotations'}, 'check_suite': {'id': 104806197795, 'node_id': 'CS_kwDOALAOP88AAAAYZu-qIw', 'head_branch': 'stable', 'head_sha': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/www/check-suites/104806197795', 'before': '5d30b1ade4f1429edd84a82d455541dabd4067d7', 'after': '7a3ea761dd3c86eb771aa250806656abd722b8f1', '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-10-15T03:26:32Z', 'updated_at': '2026-10-15T03:26:32Z'}, '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': 11537983, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTUzNzk4Mw==', 'name': 'www', 'full_name': 'dolphin-emu/www', '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/www', 'description': 'Dolphin Emulator official website source code (running on https://dolphin-emu.org/)', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/www', 'forks_url': 'https://api.github.com/repos/dolphin-emu/www/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/www/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/www/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/www/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/www/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/www/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/www/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/www/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/www/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/www/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/www/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/www/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/www/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/www/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/www/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/www/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/www/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/www/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/www/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/www/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/www/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/www/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/www/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/www/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/www/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/www/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/www/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/www/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/www/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/www/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/www/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/www/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/www/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/www/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/www/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/www/deployments', 'created_at': '2013-07-19T21:56:54Z', 'updated_at': '2026-10-15T03:26:34Z', 'pushed_at': '2026-10-15T03:26:25Z', 'git_url': 'git://github.com/dolphin-emu/www.git', 'ssh_url': 'git@github.com:dolphin-emu/www.git', 'clone_url': 'https://github.com/dolphin-emu/www.git', 'svn_url': 'https://github.com/dolphin-emu/www', 'homepage': None, 'size': 3314, 'stargazers_count': 163, 'watchers_count': 163, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 75, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 29, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 75, 'open_issues': 29, 'watchers': 163, 'default_branch': 'stable', '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-10-15T03:26:28.395650 {'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/stable', 'before': '2abcc9bb77edced307d2774566b4aa3782b29435', 'after': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'repository': {'id': 11537983, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTUzNzk4Mw==', 'name': 'www', 'full_name': 'dolphin-emu/www', '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/www', 'description': 'Dolphin Emulator official website source code (running on https://dolphin-emu.org/)', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/www', 'forks_url': 'https://api.github.com/repos/dolphin-emu/www/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/www/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/www/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/www/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/www/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/www/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/www/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/www/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/www/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/www/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/www/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/www/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/www/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/www/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/www/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/www/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/www/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/www/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/www/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/www/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/www/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/www/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/www/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/www/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/www/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/www/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/www/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/www/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/www/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/www/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/www/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/www/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/www/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/www/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/www/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/www/deployments', 'created_at': 1374271014, 'updated_at': '2026-10-06T07:42:31Z', 'pushed_at': 1792034785, 'git_url': 'git://github.com/dolphin-emu/www.git', 'ssh_url': 'git@github.com:dolphin-emu/www.git', 'clone_url': 'https://github.com/dolphin-emu/www.git', 'svn_url': 'https://github.com/dolphin-emu/www', 'homepage': None, 'size': 3314, 'stargazers_count': 163, 'watchers_count': 163, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 75, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 29, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 75, 'open_issues': 29, 'watchers': 163, 'default_branch': 'stable', 'stargazers': 163, 'master_branch': 'stable', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'OatmealDome', 'email': 'OatmealDome@users.noreply.github.com'}, 'forced': False, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created': False, 'deleted': False, 'base_ref': 'refs/heads/django-upgrade', 'compare': 'https://github.com/dolphin-emu/www/compare/2abcc9bb77ed...7a3ea761dd3c', 'commits': [{'id': 'baa0e39e3054988450adc44c8ee6fb365e70c1ed', 'tree_id': '517a74cc96505d30637e0cfbd64f88cffb25e093', 'distinct': False, 'message': 'compat: Add dummy migration for MediaWiki 1.45 changes', 'timestamp': '2026-10-10T23:18:17-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/baa0e39e3054988450adc44c8ee6fb365e70c1ed', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:17-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:17-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/compat/migrations/0002_mediawiki_145_schema.py'], 'removed': [], 'modified': []}, {'id': 'dd30392eafc98464e8c37a76d94cdb711f0d5fbb', 'tree_id': '132e78f80a41ab1c13b9cd3a920be1ed2501f181', 'distinct': False, 'message': 'requirements: Update everything to the latest versions that support Django 2.2 and Python 3.8', 'timestamp': '2026-10-10T23:18:18-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/dd30392eafc98464e8c37a76d94cdb711f0d5fbb', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '5255a775ee9cc32813fe340e47b05877fb088108', 'tree_id': '723973446aed5ad36ae4cebb96dfed7a5f886d5b', 'distinct': False, 'message': 'requirements: Update to our fork of django-blog-zinnia', 'timestamp': '2026-10-10T23:18:18-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/5255a775ee9cc32813fe340e47b05877fb088108', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'dc132ae7696b1ef807ce09f779007c0a0249cecf', 'tree_id': 'e2f6fdfdfa0f54702fb984d337123d80cdfeef22', 'distinct': False, 'message': 'settings: Remove references to outdated postgresql_psycopg2 database engine', 'timestamp': '2026-10-10T23:18:18-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/dc132ae7696b1ef807ce09f779007c0a0249cecf', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/settings.py']}, {'id': '0ec44de4ccbcb0053a104633e342822a6a9e3ea9', 'tree_id': '2668e29cec06af72210cf436d68529a25164fef8', 'distinct': False, 'message': 'dolweb: Update outdated references to staticfiles template tag library', 'timestamp': '2026-10-10T23:18:18-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/0ec44de4ccbcb0053a104633e342822a6a9e3ea9', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/templates/zinnia/skeleton.html', 'dolweb/blog/templates/zinnia/tags/search_form.html', 'dolweb/compat/templates/compat-list.html', 'dolweb/docs/templates/docs-guide.html', 'dolweb/homepage/templates/homepage-home.html', 'dolweb/media/templates/media-all.html', 'dolweb/templates/_base.html']}, {'id': '1f32a0aa7a63fe028002a78a8e57d0d21888cb8f', 'tree_id': 'b1bacc678d05e22f3fca51686ec0fa0cd9899074', 'distinct': False, 'message': 'dolweb: Replace deprecated ugettext function', 'timestamp': '2026-10-10T23:18:18-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/1f32a0aa7a63fe028002a78a8e57d0d21888cb8f', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/admin.py', 'dolweb/blog/feeds.py', 'dolweb/blog/models.py', 'dolweb/compat/templatetags/compat.py', 'dolweb/downloads/models.py']}, {'id': '3a7903635820b294477d37d11eb9baaa92e1dfbd', 'tree_id': 'fcba4df0083db43a3fb91ad947cba29b461ce1f3', 'distinct': False, 'message': 'blog: Replace deprecated force_text function', 'timestamp': '2026-10-10T23:18:18-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/3a7903635820b294477d37d11eb9baaa92e1dfbd', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/models.py']}, {'id': '4adb916f2d0523d14e4a79da3a99a64cca41f681', 'tree_id': 'e792d3d90f3af8f5d82689f7dcfb5fa7598764a8', 'distinct': False, 'message': 'utils: Replace allow_syncdb with allow_migrate in WikiRouter', 'timestamp': '2026-10-10T23:18:18-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/4adb916f2d0523d14e4a79da3a99a64cca41f681', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/settings.py', 'dolweb/utils/db.py']}, {'id': '255cd7c4ce4b3f7b8fb001875f557a570de16dcd', 'tree_id': '0475c02fddf7e8e6c7f01700091bc969ea9db3c5', 'distinct': False, 'message': 'requirements: Update to Django 3.0', 'timestamp': '2026-10-10T23:18:18-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/255cd7c4ce4b3f7b8fb001875f557a570de16dcd', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:18-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'a6e6366a54ac77f2b6b1e45af197b7c752fa6bbb', 'tree_id': '3089f6db6baacc0a41a45815074e18af8033aa61', 'distinct': False, 'message': 'blog: Remove support for Textile and reStructuredText', 'timestamp': '2026-10-10T23:18:19-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/a6e6366a54ac77f2b6b1e45af197b7c752fa6bbb', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/models.py']}, {'id': '06481477691e0ca1e2c23dc294fe6560c19fe23e', 'tree_id': '3ea43048f98549ddaf7c032f0549d81cd6b53f77', 'distinct': False, 'message': 'requirements: Update django-blog-zinnia to commit adac9427a121b52193168f9bed75a822dcab4737', 'timestamp': '2026-10-10T23:18:19-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/06481477691e0ca1e2c23dc294fe6560c19fe23e', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '26fc2d0f461ab796afde45f2d093c44cccce0027', 'tree_id': '723c8c96a915fec186795f08e6a2c98404db8dfd', 'distinct': False, 'message': 'settings: Switch to ManifestStaticFilesStorage', 'timestamp': '2026-10-10T23:18:19-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/26fc2d0f461ab796afde45f2d093c44cccce0027', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/settings.py']}, {'id': '52f84059f4b65305fb95456b55cb327b6d2b28b8', 'tree_id': 'b41173e3203427678170457eca944234f186f662', 'distinct': False, 'message': 'dolweb: Replace use of django.conf.urls.url() with django.urls.re_path()', 'timestamp': '2026-10-10T23:18:19-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/52f84059f4b65305fb95456b55cb327b6d2b28b8', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/urls.py', 'dolweb/compat/urls.py', 'dolweb/docs/urls.py', 'dolweb/downloads/urls.py', 'dolweb/media/urls.py', 'dolweb/update/urls.py', 'dolweb/urls.py']}, {'id': '544495f11ef4e1fa4bd50849d41630475c37579a', 'tree_id': '9b98938adbe9edd6cb5da2753cae79a54a75be2f', 'distinct': False, 'message': 'locale: Replace monkey patching for language selection with a dedicated locale middleware', 'timestamp': '2026-10-10T23:18:19-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/544495f11ef4e1fa4bd50849d41630475c37579a', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/utils/locale.py'], 'removed': ['dolweb/utils/monkey.py'], 'modified': ['dolweb/homepage/templatetags/language.py', 'dolweb/settings.py', 'dolweb/urls.py', 'dolweb/utils/country_redirect.py']}, {'id': '5f23b0a34662608491a9cef99b08d5b38af6e991', 'tree_id': '744b9846db8f423db55b6199b6ca4d1d8193240c', 'distinct': False, 'message': 'downloads: Remove reference to deprecated QuerySetPaginator in diggpaginator', 'timestamp': '2026-10-10T23:18:19-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/5f23b0a34662608491a9cef99b08d5b38af6e991', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/downloads/diggpaginator.py']}, {'id': 'd8457d82d6b0e7fa9718081dcc462fa21cca25dc', 'tree_id': 'e85c406f6b9f11025fe4c50c36ba290fe91935ff', 'distinct': False, 'message': 'requirements: Update to Django 3.1', 'timestamp': '2026-10-10T23:18:19-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/d8457d82d6b0e7fa9718081dcc462fa21cca25dc', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'ac5f6c30645494345a51ade3f733d069776e9ef4', 'tree_id': 'cf99daa376880485bd9758613a4d775c53d902c9', 'distinct': False, 'message': 'settings: Set django.db.models.AutoField as the default auto field', 'timestamp': '2026-10-10T23:18:19-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/ac5f6c30645494345a51ade3f733d069776e9ef4', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:19-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/settings.py']}, {'id': 'b87bb3ccded582076c4d11bc99273f4b8e629dd6', 'tree_id': '4e6e0b280bd128be7620933e370031714a96452f', 'distinct': False, 'message': 'requirements: Update django-blog-zinnia to commit 72545c155cc3dd5fbaf64e55c342c0fd66b7f775', 'timestamp': '2026-10-10T23:18:20-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/b87bb3ccded582076c4d11bc99273f4b8e629dd6', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '11c9692735cde700496371d497f03bc57916a3b0', 'tree_id': 'ed5ef388f77665641001a5354a5d5329a9eac0c7', 'distinct': False, 'message': 'homepage: Remove deprecated declaration of default_app_config', 'timestamp': '2026-10-10T23:18:20-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/11c9692735cde700496371d497f03bc57916a3b0', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/homepage/__init__.py']}, {'id': '05bff26fd822071564de0ff9d81e440d1caaeea5', 'tree_id': 'f5e808ea424ea1d65e3ac1deaced2154976bcef5', 'distinct': False, 'message': 'requirements: Update to Django 3.2', 'timestamp': '2026-10-10T23:18:20-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/05bff26fd822071564de0ff9d81e440d1caaeea5', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '669a9787927cc0b2cf3e88df15f2c9994346b41e', 'tree_id': '778880a8175660987e0cec01b8b037fb24219263', 'distinct': False, 'message': 'requirements: Update to Django 4.0', 'timestamp': '2026-10-10T23:18:20-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/669a9787927cc0b2cf3e88df15f2c9994346b41e', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'b15f309a199468824c4c4f94d00225876017a38b', 'tree_id': 'fe5cd224b2a4140854756dba6b64f1c0581ce87d', 'distinct': False, 'message': 'requirements: Update django-blog-zinnia for Django 4.0', 'timestamp': '2026-10-10T23:18:20-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/b15f309a199468824c4c4f94d00225876017a38b', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '717ac1ef6a062d65bc076744ae0a47f18651fbac', 'tree_id': '01ee58dd27963d73a7796fa171ef394f0f0003e9', 'distinct': False, 'message': 'requirements: Pin zoneinfo backport for Python 3.8', 'timestamp': '2026-10-10T23:18:20-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/717ac1ef6a062d65bc076744ae0a47f18651fbac', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:20-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'cd39329dd4142acad300119be18711cc01069dda', 'tree_id': '981f4c0bf25121229c727bdf567ea6628c695075', 'distinct': False, 'message': 'blog: Replace removed template comparison tags', 'timestamp': '2026-10-10T23:18:21-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/cd39329dd4142acad300119be18711cc01069dda', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/templates/zinnia/entry_list.html']}, {'id': '9aa801cc696bd20741ac420041f96581014c482a', 'tree_id': '42544a93cc909eea1efee480116d8e4ee13296a2', 'distinct': False, 'message': 'settings: Remove deprecated USE_L10N setting', 'timestamp': '2026-10-10T23:18:21-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/9aa801cc696bd20741ac420041f96581014c482a', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/settings.py']}, {'id': 'c962055f8fae6867545b0f0698e44f0ac42d7e65', 'tree_id': '1af2b131e14b0a25a22f098847b19ecbf840fbbd', 'distinct': False, 'message': 'requirements: Update to Django 4.1', 'timestamp': '2026-10-10T23:18:21-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/c962055f8fae6867545b0f0698e44f0ac42d7e65', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '17e10a75b781a4914198c94ca63bee1245f3a0c6', 'tree_id': '1a1b9b3e0343824e98909b58d1c9155ece81f5f9', 'distinct': False, 'message': 'requirements: Update Zinnia and debug toolbar for Django 4.1', 'timestamp': '2026-10-10T23:18:21-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/17e10a75b781a4914198c94ca63bee1245f3a0c6', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'bff8397156b0856fdb9a0c4105aa42a8f081de48', 'tree_id': '74b24a0d4052b635ee307da9e30015156c26f514', 'distinct': False, 'message': 'requirements: Update to Django 4.2', 'timestamp': '2026-10-10T23:18:21-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/bff8397156b0856fdb9a0c4105aa42a8f081de48', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '89586f3a471230e3afb362e576bfa60ddbb7e33f', 'tree_id': '9f63c0a213d06de21209843e0fdfa2789aadb828', 'distinct': False, 'message': 'requirements: Update Zinnia and debug toolbar for Django 4.2', 'timestamp': '2026-10-10T23:18:21-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/89586f3a471230e3afb362e576bfa60ddbb7e33f', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'c6f287aba582f97b8c977d6b9ca621967c8c0014', 'tree_id': '8f9734c271453348b55d7dc3daed2c936ebe8938', 'distinct': False, 'message': 'settings: Configure file storage with STORAGES', 'timestamp': '2026-10-10T23:18:21-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/c6f287aba582f97b8c977d6b9ca621967c8c0014', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:21-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/settings.py']}, {'id': '2baf8ce5de9274f1f6266d24319f34d8042a8047', 'tree_id': '4dc4c1e4816b19b3f629d6bb2ecceca2587e4bc9', 'distinct': False, 'message': 'downloads: Replace index_together with a named index', 'timestamp': '2026-10-10T23:18:22-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/2baf8ce5de9274f1f6266d24319f34d8042a8047', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/downloads/migrations/0006_replace_index_together.py'], 'removed': [], 'modified': ['dolweb/downloads/models.py']}, {'id': '61ca95bbbcc87ffdb7e82f28351eeaf17568bc2b', 'tree_id': '720815145408cf66eafc5096b0e1b35514c43224', 'distinct': False, 'message': 'update: Replace index_together with a named index', 'timestamp': '2026-10-10T23:18:22-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/61ca95bbbcc87ffdb7e82f28351eeaf17568bc2b', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/update/migrations/0003_replace_index_together.py'], 'removed': [], 'modified': ['dolweb/update/models.py']}, {'id': '5765cf9c4bd4c21b906f6ef9f354e8d8b697580d', 'tree_id': 'bc0ef613153430758f340f718434e57369ed8845', 'distinct': False, 'message': 'migrations: Discover legacy indexes instead of assuming their names', 'timestamp': '2026-10-10T23:18:22-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/5765cf9c4bd4c21b906f6ef9f354e8d8b697580d', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/downloads/migrations/0006_replace_index_together.py', 'dolweb/update/migrations/0003_replace_index_together.py']}, {'id': '3869af821e95adc6605569a98db5fc141d58cb0a', 'tree_id': '139e30c241ac1c3b93d6bcf5f640b1730032f53b', 'distinct': False, 'message': 'migrations: Create named indexes when legacy indexes are absent', 'timestamp': '2026-10-10T23:18:22-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/3869af821e95adc6605569a98db5fc141d58cb0a', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/downloads/migrations/0006_replace_index_together.py', 'dolweb/update/migrations/0003_replace_index_together.py']}, {'id': '7ed50fbca2e88de12a73aa20757d990944b460d0', 'tree_id': '6726e05807187796e76a4f1912d8cea4bb34dfaa', 'distinct': False, 'message': 'project: Use Python 3.12 for development', 'timestamp': '2026-10-10T23:18:22-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/7ed50fbca2e88de12a73aa20757d990944b460d0', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'added': ['.python-version'], 'removed': [], 'modified': ['CONTRIBUTING.md', 'shell.nix']}, {'id': 'a94bb00afef56feea1554551043f611638ff6241', 'tree_id': '38536e7e2a683524a3ed786e5d83138d89c2b438', 'distinct': False, 'message': 'requirements: Update Zinnia and dependencies for Python 3.12', 'timestamp': '2026-10-10T23:18:22-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/a94bb00afef56feea1554551043f611638ff6241', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'cc79cb1dd65fc17716bf8a4649714ca2b150f5d9', 'tree_id': '4acf5fff61c022e1b71ae8b95ded77258c011383', 'distinct': False, 'message': 'requirements: Upgrade Django to 5.0.14', 'timestamp': '2026-10-10T23:18:22-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/cc79cb1dd65fc17716bf8a4649714ca2b150f5d9', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:22-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '5033e417fcbf06436da8a0c1eef72d2fc17d5e19', 'tree_id': '1a991554ab5efb91b6792f0bffada9143ace71b5', 'distinct': False, 'message': 'requirements: Update Zinnia for Django 5.0', 'timestamp': '2026-10-10T23:18:23-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/5033e417fcbf06436da8a0c1eef72d2fc17d5e19', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '6d5515c1fa7403e2fdcaea45dffbf6874509bc5c', 'tree_id': '535d686d4328f434a1abedabbfaddc267f3d077c', 'distinct': False, 'message': 'downloads: Default optional list page to the first page', 'timestamp': '2026-10-10T23:18:23-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/6d5515c1fa7403e2fdcaea45dffbf6874509bc5c', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/downloads/views.py']}, {'id': '3349622b325b3d3c06faf39563f25a52656171c5', 'tree_id': 'b1f2484d2f202fd4a0d7c6de8ffd5f85a0ad304c', 'distinct': False, 'message': 'requirements: Upgrade Django to 5.1.15', 'timestamp': '2026-10-10T23:18:23-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/3349622b325b3d3c06faf39563f25a52656171c5', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '7b165049e51ffd59f99261e499eb7d873df2b48a', 'tree_id': '630e7f0a29320d93a8ccc5b6fa1e55126f38e578', 'distinct': False, 'message': 'requirements: Update Zinnia and MPTT for Django 5.1', 'timestamp': '2026-10-10T23:18:23-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/7b165049e51ffd59f99261e499eb7d873df2b48a', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'bc01cecdb7d090d5691889f6dc6710199c6c07f9', 'tree_id': '0fbdc3756e82ca5db00ba423cb3ca887699a5721', 'distinct': False, 'message': 'requirements: Upgrade Django to 5.2.18', 'timestamp': '2026-10-10T23:18:23-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/bc01cecdb7d090d5691889f6dc6710199c6c07f9', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '604e128c7f2d7725f67a574cf4806d5ec3554fa6', 'tree_id': '15dff84a2d90a3e6421fa3fed4085873d2d30c8c', 'distinct': False, 'message': 'requirements: Update Zinnia for Django 5.2', 'timestamp': '2026-10-10T23:18:23-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/604e128c7f2d7725f67a574cf4806d5ec3554fa6', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'bcb180367bea43e3d67abe54cc5ff4a16405d323', 'tree_id': 'a6ee0b9a0d8a0c7d4096d7ce420d27d646306c17', 'distinct': False, 'message': 'blog: Move custom zinnia code into our zinnia fork', 'timestamp': '2026-10-10T23:18:23-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/bcb180367bea43e3d67abe54cc5ff4a16405d323', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/blog/migrations/0002_move_blogseries_to_zinnia.py'], 'removed': [], 'modified': ['dolweb/blog/admin.py', 'dolweb/blog/feeds.py', 'dolweb/blog/migrations/0001_initial.py', 'dolweb/blog/models.py', 'dolweb/blog/templatetags/blog_tags.py', 'dolweb/blog/views.py', 'dolweb/settings.py']}, {'id': '47d1cc4b242422fda1bc3ef77d237e72357fc9ba', 'tree_id': 'cb11ec18d2c8c1758204c04f543ecc2ce9f5cc1f', 'distinct': False, 'message': 'blog: Move even more series code into our zinnia fork', 'timestamp': '2026-10-10T23:18:23-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/47d1cc4b242422fda1bc3ef77d237e72357fc9ba', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:23-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/blog/templates/zinnia/series_list.html'], 'removed': ['dolweb/blog/feeds.py', 'dolweb/blog/templates/blog_chunk_series.html', 'dolweb/blog/templates/series-index.html'], 'modified': ['dolweb/blog/admin.py', 'dolweb/blog/templates/blog_sidebar.html', 'dolweb/blog/templates/zinnia/_entry_detail_base.html', 'dolweb/blog/templatetags/blog_tags.py', 'dolweb/blog/urls.py', 'dolweb/blog/views.py', 'dolweb/homepage/templates/homepage-home.html']}, {'id': '959f65ce169941979a2a6f3cc5b6d7e72a690be9', 'tree_id': '9d86ed86026360646d1dd118cbf763136ec4c35b', 'distinct': False, 'message': 'blog: Move Etherpad code to zinnia fork', 'timestamp': '2026-10-10T23:18:24-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/959f65ce169941979a2a6f3cc5b6d7e72a690be9', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': ['dolweb/blog/templates/etherpad-widget.html'], 'modified': ['dolweb/blog/admin.py', 'dolweb/blog/urls.py', 'dolweb/blog/views.py', 'dolweb/settings.py']}, {'id': '345b57f47aba785c1840f49650e377293a0cc3be', 'tree_id': '8001ecb299a5b5e53db4c6a91b355205b52c081c', 'distinct': False, 'message': 'blog: Move public preview code to zinnia fork', 'timestamp': '2026-10-10T23:18:24-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/345b57f47aba785c1840f49650e377293a0cc3be', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': ['dolweb/blog/views.py'], 'modified': ['dolweb/blog/urls.py']}, {'id': '8a9e39a5112a0c5c74e98a1a28c06da5220c14e8', 'tree_id': '991207c4b6be957d97b74361d970d86942a75133', 'distinct': False, 'message': 'blog: Remove similar entries', 'timestamp': '2026-10-10T23:18:24-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/8a9e39a5112a0c5c74e98a1a28c06da5220c14e8', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/templates/zinnia/entry_detail_base.html']}, {'id': '504ada341e0766923d031ca496e5ac86ba890f1a', 'tree_id': '0ae6862f6a6bbdb6237e6ddec0794fa9a8fb41e9', 'distinct': False, 'message': 'blog: Switch to Google for search backend', 'timestamp': '2026-10-10T23:18:24-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/504ada341e0766923d031ca496e5ac86ba890f1a', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/templates/blog_sidebar.html', 'dolweb/blog/templates/zinnia/tags/search_form.html']}, {'id': '879273bc0df8b21e96bea0caac3ef1b317385b3c', 'tree_id': '326ae00ff05d478d98ab0454525e59088ac7f245', 'distinct': False, 'message': 'requirements: Update Zinnia', 'timestamp': '2026-10-10T23:18:24-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/879273bc0df8b21e96bea0caac3ef1b317385b3c', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '3bb60ee505b6aa6ecb5f70fdaac10ad95105afc1', 'tree_id': '262a9ce262d3bef71e1c242342fd8456c7027bd7', 'distinct': False, 'message': 'project: Remove unnecessary dependencies', 'timestamp': '2026-10-10T23:18:24-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/3bb60ee505b6aa6ecb5f70fdaac10ad95105afc1', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': 'e9570c6518e00ac13aec8b1f30ce91c4a9914641', 'tree_id': '1c235a7485e6d69aca154885c3d25e1ced0595df', 'distinct': False, 'message': 'update: Sort and simplify version dropdown in release tracks admin panel', 'timestamp': '2026-10-10T23:18:24-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/e9570c6518e00ac13aec8b1f30ce91c4a9914641', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/downloads/admin.py', 'dolweb/update/admin.py']}, {'id': '0611b1e2a72f5c51b026e0cddd96435067ea3315', 'tree_id': '070aae526755d875cce40c1fb530accc111a1401', 'distinct': False, 'message': 'admin: Disable nav sidebar in the admin panel', 'timestamp': '2026-10-10T23:18:24-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/0611b1e2a72f5c51b026e0cddd96435067ea3315', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:24-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/admin.py'], 'removed': [], 'modified': ['dolweb/settings.py']}, {'id': 'a8c2acc4b6ad93fff8414704c586626cb8cc4a3a', 'tree_id': 'bd9969657290739f39cd577f3e52a32aa0efc9b4', 'distinct': False, 'message': 'blog: Remove all comments, discussions, pingback, and traceback support', 'timestamp': '2026-10-10T23:18:25-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/a8c2acc4b6ad93fff8414704c586626cb8cc4a3a', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:25-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:25-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['dolweb/blog/templates/zinnia/_entry_detail_base.html', 'dolweb/blog/templates/zinnia/entry_detail_base.html', 'dolweb/locale/ar/LC_MESSAGES/django.po', 'dolweb/locale/ast/LC_MESSAGES/django.po', 'dolweb/locale/bg/LC_MESSAGES/django.po', 'dolweb/locale/ca/LC_MESSAGES/django.po', 'dolweb/locale/cs/LC_MESSAGES/django.po', 'dolweb/locale/cy/LC_MESSAGES/django.po', 'dolweb/locale/da/LC_MESSAGES/django.po', 'dolweb/locale/da_DK/LC_MESSAGES/django.po', 'dolweb/locale/de/LC_MESSAGES/django.po', 'dolweb/locale/el/LC_MESSAGES/django.po', 'dolweb/locale/eo/LC_MESSAGES/django.po', 'dolweb/locale/es/LC_MESSAGES/django.po', 'dolweb/locale/fa/LC_MESSAGES/django.po', 'dolweb/locale/fi/LC_MESSAGES/django.po', 'dolweb/locale/fr/LC_MESSAGES/django.po', 'dolweb/locale/ga/LC_MESSAGES/django.po', 'dolweb/locale/gl/LC_MESSAGES/django.po', 'dolweb/locale/he/LC_MESSAGES/django.po', 'dolweb/locale/hi/LC_MESSAGES/django.po', 'dolweb/locale/hi_IN/LC_MESSAGES/django.po', 'dolweb/locale/hr/LC_MESSAGES/django.po', 'dolweb/locale/hu/LC_MESSAGES/django.po', 'dolweb/locale/id/LC_MESSAGES/django.po', 'dolweb/locale/is/LC_MESSAGES/django.po', 'dolweb/locale/it/LC_MESSAGES/django.po', 'dolweb/locale/ja/LC_MESSAGES/django.po', 'dolweb/locale/ko/LC_MESSAGES/django.po', 'dolweb/locale/lv/LC_MESSAGES/django.po', 'dolweb/locale/ms/LC_MESSAGES/django.po', 'dolweb/locale/ms_MY/LC_MESSAGES/django.po', 'dolweb/locale/nb/LC_MESSAGES/django.po', 'dolweb/locale/nl/LC_MESSAGES/django.po', 'dolweb/locale/pl/LC_MESSAGES/django.po', 'dolweb/locale/pt/LC_MESSAGES/django.po', 'dolweb/locale/pt_BR/LC_MESSAGES/django.po', 'dolweb/locale/ro/LC_MESSAGES/django.po', 'dolweb/locale/ro_RO/LC_MESSAGES/django.po', 'dolweb/locale/ru/LC_MESSAGES/django.po', 'dolweb/locale/sk/LC_MESSAGES/django.po', 'dolweb/locale/sl/LC_MESSAGES/django.po', 'dolweb/locale/sr/LC_MESSAGES/django.po', 'dolweb/locale/sv/LC_MESSAGES/django.po', 'dolweb/locale/template.pot', 'dolweb/locale/th/LC_MESSAGES/django.po', 'dolweb/locale/th_TH/LC_MESSAGES/django.po', 'dolweb/locale/tr/LC_MESSAGES/django.po', 'dolweb/locale/uk/LC_MESSAGES/django.po', 'dolweb/locale/vi/LC_MESSAGES/django.po', 'dolweb/locale/vi_VN/LC_MESSAGES/django.po', 'dolweb/locale/zh_CN/LC_MESSAGES/django.po', 'dolweb/locale/zh_TW/LC_MESSAGES/django.po', 'dolweb/settings.py', 'requirements.txt']}, {'id': '5d30b1ade4f1429edd84a82d455541dabd4067d7', 'tree_id': 'f90b2ae4d4013e182f213293d7a5c819cb987b90', 'distinct': False, 'message': 'requirements: Update Zinnia', 'timestamp': '2026-10-10T23:18:25-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/5d30b1ade4f1429edd84a82d455541dabd4067d7', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:25-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-10T23:18:25-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, {'id': '7e90f23f95950e9c3e08a9161ef3dbc0d820fb00', 'tree_id': 'f2be63d171950d27317e561958f8a8a70c4a38aa', 'distinct': False, 'message': 'blog: Normalize all tags to lowercase', 'timestamp': '2026-10-12T01:18:55-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/7e90f23f95950e9c3e08a9161ef3dbc0d820fb00', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:18:55-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:18:55-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/blog/migrations/0003_lowercase_tags.py'], 'removed': [], 'modified': ['dolweb/settings.py']}, {'id': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'tree_id': '79c6040f99b979922777359eb652454d5a978ed0', 'distinct': False, 'message': 'requirements: Update Zinnia', 'timestamp': '2026-10-12T01:19:02-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/7a3ea761dd3c86eb771aa250806656abd722b8f1', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}], 'head_commit': {'id': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'tree_id': '79c6040f99b979922777359eb652454d5a978ed0', 'distinct': False, 'message': 'requirements: Update Zinnia', 'timestamp': '2026-10-12T01:19:02-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/7a3ea761dd3c86eb771aa250806656abd722b8f1', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-14T18:00:20.222586 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'edited', 'number': 14932, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'id': 4860925417, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'number': 14932, 'state': 'open', 'locked': False, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\r\n\r\n**Implemented Features**\r\n\r\n**1. Automatic controller connection and disconnection**\r\n\r\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\r\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\r\n\r\n**2. Automatic Bluetooth device selection for Wiimotes**\r\n\r\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its Bluetooth device instead of the SDL one. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\r\n\r\n**3. Default SDL mapping for controllers**\r\n\r\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\r\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\r\n\r\n**4. Partial Steam Input integration**\r\n\r\nA partial integration with Steam Input has also been implemented to detect controller reordering.\r\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\r\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T18:00:18Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '6fc8fb05e0a4abb3c10daa51666e2ede5361b9e3', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932/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/14932/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/eac451f547d4c4920a7465219c4ca41712679f31', 'head': {'label': 'RubGarFue:master', 'ref': 'master', 'sha': 'eac451f547d4c4920a7465219c4ca41712679f31', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1272156999, 'node_id': 'R_kgDOS9OTRw', 'name': 'dolphin', 'full_name': 'RubGarFue/dolphin', 'private': False, 'owner': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/RubGarFue/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/RubGarFue/dolphin', 'forks_url': 'https://api.github.com/repos/RubGarFue/dolphin/forks', 'keys_url': 'https://api.github.com/repos/RubGarFue/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/RubGarFue/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/RubGarFue/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/RubGarFue/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/RubGarFue/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/RubGarFue/dolphin/events', 'assignees_url': 'https://api.github.com/repos/RubGarFue/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/RubGarFue/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/RubGarFue/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/RubGarFue/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/RubGarFue/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/RubGarFue/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/RubGarFue/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/RubGarFue/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/RubGarFue/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/RubGarFue/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/RubGarFue/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/RubGarFue/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/RubGarFue/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/RubGarFue/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/RubGarFue/dolphin/merges', 'archive_url': 'https://api.github.com/repos/RubGarFue/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/RubGarFue/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/RubGarFue/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/RubGarFue/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/RubGarFue/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/RubGarFue/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/RubGarFue/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/RubGarFue/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/RubGarFue/dolphin/deployments', 'created_at': '2026-06-17T10:42:51Z', 'updated_at': '2026-10-14T16:04:17Z', 'pushed_at': '2026-10-14T16:03:40Z', 'git_url': 'git://github.com/RubGarFue/dolphin.git', 'ssh_url': 'git@github.com:RubGarFue/dolphin.git', 'clone_url': 'https://github.com/RubGarFue/dolphin.git', 'svn_url': 'https://github.com/RubGarFue/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 518387, 'stargazers_count': 1, 'watchers_count': 1, 'language': 'C++', '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': 1, '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': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', '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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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/14932'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14932'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932/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/14932/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/eac451f547d4c4920a7465219c4ca41712679f31'}}, 'author_association': 'NONE', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': False, 'mergeable_state': 'unstable', 'merged_by': None, 'comments': 5, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 11, 'additions': 745, 'deletions': 2, 'changed_files': 13}, 'changes': {'body': {'from': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications."}}, '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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-14T17:59:21.395647 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 5, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T17:59:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174877268', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174877268', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6174877268, 'node_id': 'IC_kwDOALCn2M8AAAABcA0mVA', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-14T17:59:18Z', 'updated_at': '2026-10-14T17:59:18Z', 'body': '> Bluetooth Passthrough refers to our Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED feature.\r\n\r\nSorry, my bad. I just meant that when a new Wiimote is connected, we select its Bluetooth device instead of its SDL device.\r\n\r\nI\'ll update the original comment and change "Bluetooth passthrough selection" to "Bluetooth device selection" to make it clearer.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174877268/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-14T17:32:38.314059 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 4, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T17:32:35Z', '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/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174371456', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174371456', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6174371456, 'node_id': 'IC_kwDOALCn2M8AAAABcAVugA', '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-10-14T17:32:35Z', 'updated_at': '2026-10-14T17:32:35Z', 'body': "> > I don't think this is a good idea. But also this doesn't seem to actually be implemented?\r\n> \r\n> What exactly do you mean by it not being implemented? Maybe I didn't explain that part clearly enough. It's not a separate feature; it's part of the same one.\r\n> \r\n\r\nBluetooth Passthrough refers to our `Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED` feature.\r\n> Dolphin automatically selects its built-in Bluetooth passthrough implementation\r\n\r\nI don't think you are enabling Bluetooth Passthrough anywhere in this PR?\r\n", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174371456/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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-10-14T17:20:46.429248 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/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-14T16:20:06Z', 'updated_at': '2026-10-14T17:20:44Z', '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/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174146461', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6174146461', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6174146461, 'node_id': 'IC_kwDOALCn2M8AAAABcAH_nQ', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-14T17:20:44Z', 'updated_at': '2026-10-14T17:20:44Z', 'body': '> I don\'t think this is a good idea. But also this doesn\'t seem to actually be implemented?\r\n\r\nWhat exactly do you mean by it not being implemented? Maybe I didn\'t explain that part clearly enough. It\'s not a separate feature; it\'s part of the same one.\r\n\r\nWhen "Automatic SDL Controller Assignment" is enabled, SDL controllers are automatically detected and assigned to the different Dolphin controller slots.\r\n\r\nThe issue with Wiimotes is that if we connect one and select its device via SDL, we lose access to the gyroscope and motion controls.\r\n\r\nThat\'s why we make an exception for Wiimotes: when a new Wiimote is detected through SDL, we select its native\'s Bluetooth passthrough profile instead. That\'s what "Automatic Bluetooth passthrough selection" refers to.\r\n', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6174146461/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-14T17:02:20.997647 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T17:02:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6173798014', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6173798014', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6173798014, 'node_id': 'IC_kwDOALCn2M8AAAABb_yufg', '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-10-14T17:02:18Z', 'updated_at': '2026-10-14T17:02:18Z', 'body': "I think this should be split into multiple PRs each with their own discussion.\r\n> Automatic Bluetooth passthrough selection for Wiimotes\r\n\r\nI don't think this is a good idea. But also this doesn't seem to actually be implemented?", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6173798014/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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-10-14T16:24:35.146676 {'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'id': 5851409517, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'number': 14932, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T16:24:25Z', '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/14932', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'merged_at': None}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/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/14932/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6173057135', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932#issuecomment-6173057135', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'id': 6173057135, 'node_id': 'IC_kwDOALCn2M8AAAABb_Fgbw', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-10-14T16:24:24Z', 'updated_at': '2026-10-14T16:24:24Z', 'body': 'For known limitations and other comments:\r\n\r\nhttps://forums.dolphin-emu.org/Thread-feature-request-automatic-sdl-controller-assignment', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6173057135/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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-14T16:20:08.847042 {'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 14932, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932', 'id': 4860925417, 'node_id': 'PR_kwDOALCn2M8AAAABIbvV6Q', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14932', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14932.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932', 'number': 14932, 'state': 'open', 'locked': False, 'title': 'Feature: Automatic SDL Controller Assignment', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "The goal of this feature is to make controller management dynamic, so users can connect, disconnect, or switch controllers without having to manually reconfigure Dolphin's controller settings every time.\n\n**Implemented Features**\n\n**1. Automatic controller connection and disconnection**\n\nDolphin automatically detects controller connection and disconnection events and updates the active player slots accordingly. When a controller is connected, it can be assigned to an available player slot; when a controller is disconnected, its slot is deactivated.\nThis makes switching between different controllers and setting up local multiplayer much more convenient, specially while a game is already running.\n\n**2. Automatic Bluetooth passthrough selection for Wiimotes**\n\nWhen a connected controller is identified as a Wiimote, Dolphin automatically selects its built-in Bluetooth passthrough implementation. This is important because it allows Wiimotes to use Dolphin's native motion input support and mapped buttons rather than being treated as ordinary gamepads.\n\n**3. Default SDL mapping for controllers**\n\nA default mapping for emulated Wiimote has been added for controllers detected through SDL.\nThe default mapping can be customized for individual controllers by creating an SDL configuration for that specific device. Dolphin will automatically select the matching configuration when that controller is detected, allowing different controllers to have their own mappings without requiring manual reconfiguration whenever they are connected.\n\n**4. Partial Steam Input integration**\n\nA partial integration with Steam Input has also been implemented to detect controller reordering.\nWhen a controller changes position through Steam Input's controller ordering interface, Dolphin can detect the resulting device changes and update its in-game controller assignments accordingly.\nHowever, the behavior differs between Windows and Linux (including SteamOS on the Steam Deck), due to differences in how XInput and evdev expose controllers to applications.", 'created_at': '2026-10-14T16:20:06Z', 'updated_at': '2026-10-14T16:20:06Z', '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/14932/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932/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/14932/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/eac451f547d4c4920a7465219c4ca41712679f31', 'head': {'label': 'RubGarFue:master', 'ref': 'master', 'sha': 'eac451f547d4c4920a7465219c4ca41712679f31', 'user': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 1272156999, 'node_id': 'R_kgDOS9OTRw', 'name': 'dolphin', 'full_name': 'RubGarFue/dolphin', 'private': False, 'owner': {'login': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/RubGarFue/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/RubGarFue/dolphin', 'forks_url': 'https://api.github.com/repos/RubGarFue/dolphin/forks', 'keys_url': 'https://api.github.com/repos/RubGarFue/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/RubGarFue/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/RubGarFue/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/RubGarFue/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/RubGarFue/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/RubGarFue/dolphin/events', 'assignees_url': 'https://api.github.com/repos/RubGarFue/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/RubGarFue/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/RubGarFue/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/RubGarFue/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/RubGarFue/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/RubGarFue/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/RubGarFue/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/RubGarFue/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/RubGarFue/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/RubGarFue/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/RubGarFue/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/RubGarFue/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/RubGarFue/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/RubGarFue/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/RubGarFue/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/RubGarFue/dolphin/merges', 'archive_url': 'https://api.github.com/repos/RubGarFue/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/RubGarFue/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/RubGarFue/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/RubGarFue/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/RubGarFue/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/RubGarFue/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/RubGarFue/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/RubGarFue/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/RubGarFue/dolphin/deployments', 'created_at': '2026-06-17T10:42:51Z', 'updated_at': '2026-10-14T16:04:17Z', 'pushed_at': '2026-10-14T16:03:40Z', 'git_url': 'git://github.com/RubGarFue/dolphin.git', 'ssh_url': 'git@github.com:RubGarFue/dolphin.git', 'clone_url': 'https://github.com/RubGarFue/dolphin.git', 'svn_url': 'https://github.com/RubGarFue/dolphin', 'homepage': 'https://dolphin-emu.org', 'size': 516979, 'stargazers_count': 1, 'watchers_count': 1, 'language': 'C++', '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': 1, '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': '8d2ad1a662472955497e5bb79d7b9ec6999e1f0d', '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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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/14932'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14932'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14932/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14932/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/14932/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/eac451f547d4c4920a7465219c4ca41712679f31'}}, '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': 11, 'additions': 745, 'deletions': 2, 'changed_files': 13}, '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-10-14T13:30:21Z', 'pushed_at': '2026-10-12T04:41:55Z', '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': 561281, 'stargazers_count': 15656, 'watchers_count': 15656, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3317, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 481, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3317, 'open_issues': 481, 'watchers': 15656, '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': 'RubGarFue', 'id': 62031291, 'node_id': 'MDQ6VXNlcjYyMDMxMjkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/62031291?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/RubGarFue', 'html_url': 'https://github.com/RubGarFue', 'followers_url': 'https://api.github.com/users/RubGarFue/followers', 'following_url': 'https://api.github.com/users/RubGarFue/following{/other_user}', 'gists_url': 'https://api.github.com/users/RubGarFue/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/RubGarFue/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/RubGarFue/subscriptions', 'organizations_url': 'https://api.github.com/users/RubGarFue/orgs', 'repos_url': 'https://api.github.com/users/RubGarFue/repos', 'events_url': 'https://api.github.com/users/RubGarFue/events{/privacy}', 'received_events_url': 'https://api.github.com/users/RubGarFue/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-10-14T04:53:35.078863 {'source': 'webserver', 'gh_type': 'check_suite', 'raw': {'action': 'requested', 'check_suite': {'id': 104358367775, 'node_id': 'CS_kwDOALAOP88AAAAYTD5SHw', 'head_branch': 'django-upgrade', 'head_sha': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/www/check-suites/104358367775', 'before': '5d30b1ade4f1429edd84a82d455541dabd4067d7', 'after': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'pull_requests': [], 'app': {'id': 49947, 'client_id': 'Iv1.1fcaea7644d8b727', 'slug': 'dolphin-ci', 'node_id': 'MDM6QXBwNDk5NDc=', 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'Dolphin CI', 'description': 'Continuous Integration setup for [dolphin-emu.org](https://dolphin-emu.org/).', 'external_url': 'https://github.com/dolphin-emu', 'html_url': 'https://github.com/apps/dolphin-ci', 'created_at': '2019-12-26T22:26:07Z', 'updated_at': '2019-12-26T22:33:19Z', 'permissions': {'checks': 'write', 'contents': 'read', 'issues': 'write', 'members': 'read', 'metadata': 'read', 'pull_requests': 'write', 'statuses': 'write'}, 'events': ['check_run', 'commit_comment', 'issue_comment', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push']}, 'created_at': '2026-10-14T04:53:34Z', 'updated_at': '2026-10-14T04:53:34Z', 'rerequestable': True, 'runs_rerequestable': True, 'latest_check_runs_count': 0, 'check_runs_url': 'https://api.github.com/repos/dolphin-emu/www/check-suites/104358367775/check-runs', 'head_commit': {'id': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'tree_id': '79c6040f99b979922777359eb652454d5a978ed0', 'message': 'requirements: Update Zinnia', 'timestamp': '2026-10-12T05:19:02Z', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me'}}}, 'repository': {'id': 11537983, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTUzNzk4Mw==', 'name': 'www', 'full_name': 'dolphin-emu/www', '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/www', 'description': 'Dolphin Emulator official website source code (running on https://dolphin-emu.org/)', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/www', 'forks_url': 'https://api.github.com/repos/dolphin-emu/www/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/www/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/www/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/www/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/www/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/www/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/www/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/www/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/www/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/www/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/www/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/www/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/www/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/www/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/www/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/www/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/www/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/www/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/www/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/www/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/www/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/www/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/www/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/www/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/www/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/www/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/www/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/www/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/www/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/www/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/www/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/www/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/www/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/www/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/www/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/www/deployments', 'created_at': '2013-07-19T21:56:54Z', 'updated_at': '2026-10-06T07:42:31Z', 'pushed_at': '2026-10-14T04:53:33Z', 'git_url': 'git://github.com/dolphin-emu/www.git', 'ssh_url': 'git@github.com:dolphin-emu/www.git', 'clone_url': 'https://github.com/dolphin-emu/www.git', 'svn_url': 'https://github.com/dolphin-emu/www', 'homepage': None, 'size': 3307, 'stargazers_count': 163, 'watchers_count': 163, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 75, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 29, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 75, 'open_issues': 29, 'watchers': 163, 'default_branch': 'stable', '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-10-14T04:53:34.714577 {'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/django-upgrade', 'before': '5d30b1ade4f1429edd84a82d455541dabd4067d7', 'after': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'repository': {'id': 11537983, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTUzNzk4Mw==', 'name': 'www', 'full_name': 'dolphin-emu/www', '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/www', 'description': 'Dolphin Emulator official website source code (running on https://dolphin-emu.org/)', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/www', 'forks_url': 'https://api.github.com/repos/dolphin-emu/www/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/www/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/www/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/www/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/www/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/www/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/www/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/www/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/www/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/www/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/www/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/www/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/www/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/www/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/www/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/www/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/www/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/www/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/www/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/www/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/www/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/www/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/www/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/www/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/www/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/www/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/www/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/www/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/www/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/www/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/www/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/www/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/www/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/www/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/www/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/www/deployments', 'created_at': 1374271014, 'updated_at': '2026-10-06T07:42:31Z', 'pushed_at': 1791953613, 'git_url': 'git://github.com/dolphin-emu/www.git', 'ssh_url': 'git@github.com:dolphin-emu/www.git', 'clone_url': 'https://github.com/dolphin-emu/www.git', 'svn_url': 'https://github.com/dolphin-emu/www', 'homepage': None, 'size': 3307, 'stargazers_count': 163, 'watchers_count': 163, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 75, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 29, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 75, 'open_issues': 29, 'watchers': 163, 'default_branch': 'stable', 'stargazers': 163, 'master_branch': 'stable', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'OatmealDome', 'email': 'OatmealDome@users.noreply.github.com'}, 'forced': False, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created': False, 'deleted': False, 'base_ref': None, 'compare': 'https://github.com/dolphin-emu/www/compare/5d30b1ade4f1...7a3ea761dd3c', 'commits': [{'id': '7e90f23f95950e9c3e08a9161ef3dbc0d820fb00', 'tree_id': 'f2be63d171950d27317e561958f8a8a70c4a38aa', 'distinct': True, 'message': 'blog: Normalize all tags to lowercase', 'timestamp': '2026-10-12T01:18:55-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/7e90f23f95950e9c3e08a9161ef3dbc0d820fb00', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:18:55-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:18:55-04:00', 'username': 'OatmealDome'}, 'added': ['dolweb/blog/migrations/0003_lowercase_tags.py'], 'removed': [], 'modified': ['dolweb/settings.py']}, {'id': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'tree_id': '79c6040f99b979922777359eb652454d5a978ed0', 'distinct': True, 'message': 'requirements: Update Zinnia', 'timestamp': '2026-10-12T01:19:02-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/7a3ea761dd3c86eb771aa250806656abd722b8f1', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}], 'head_commit': {'id': '7a3ea761dd3c86eb771aa250806656abd722b8f1', 'tree_id': '79c6040f99b979922777359eb652454d5a978ed0', 'distinct': True, 'message': 'requirements: Update Zinnia', 'timestamp': '2026-10-12T01:19:02-04:00', 'url': 'https://github.com/dolphin-emu/www/commit/7a3ea761dd3c86eb771aa250806656abd722b8f1', 'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'committer': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-10-12T01:19:02-04:00', 'username': 'OatmealDome'}, 'added': [], 'removed': [], 'modified': ['requirements.txt']}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}