Status for Dolphin Central

Recent events

2026-11-04T11:46:29.428224	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-appimage-arm64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/50/builds/173', 'description': 'Build succeeded on builder pr-appimage-arm64', 'type': 'build_status'}
2026-11-04T11:46:28.460838	{'source': 'webserver', 'raw': {'buildid': 196492, 'number': 173, 'builderid': 50, 'buildrequestid': 197083, 'workerid': 16, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792787, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'workername': ['deneb-appimage', 'Worker'], 'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-appimage-arm64', 'Builder'], 'builderid': [50, 'Builder'], 'repository': ['', 'Build'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'codebase': ['', 'Build'], 'buildnumber': [173, 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-appimage-arm64', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197083, 'buildsetid': 44136, 'builderid': 50, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 50, 'name': 'pr-appimage-arm64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/50/builds/173'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:25.949420	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-ubu-x64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/27/builds/10927', 'description': 'Build succeeded on builder pr-ubu-x64', 'type': 'build_status'}
2026-11-04T11:46:25.026050	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-appimage-x64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/49/builds/179', 'description': 'Build succeeded on builder pr-appimage-x64', 'type': 'build_status'}
2026-11-04T11:46:24.135717	{'source': 'webserver', 'raw': {'buildid': 196499, 'number': 10927, 'builderid': 27, 'buildrequestid': 197078, 'workerid': 10, 'masterid': 1, 'started_at': 1793792679, 'complete_at': 1793792752, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-ubu-x64', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [27, 'Builder'], 'buildnumber': [10927, 'Build'], 'buildername': ['pr-ubu-x64', 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'branch': ['refs/pull/14981/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197078, 'buildsetid': 44136, 'builderid': 27, 'priority': 0, 'claimed': True, 'claimed_at': 1793792679, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10927'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:24.073042	{'source': 'webserver', 'raw': {'buildid': 196491, 'number': 179, 'builderid': 49, 'buildrequestid': 197082, 'workerid': 15, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792783, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [49, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'repository': ['', 'Build'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'buildername': ['pr-appimage-x64', 'Builder'], 'branch': ['refs/pull/14981/head', 'Build'], 'workername': ['altair-appimage', 'Worker'], 'buildnumber': [179, 'Build'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-appimage-x64', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197082, 'buildsetid': 44136, 'builderid': 49, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 49, 'name': 'pr-appimage-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/49/builds/179'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:22.205130	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-04T11:46:21.862098	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-04T11:46:20.193192	{'source': 'webserver', 'raw': {'buildid': 196501, 'number': 9583, 'builderid': 10, 'buildrequestid': 197084, 'workerid': 5, 'masterid': 1, 'started_at': 1793792752, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14981', 'Trigger'], 'pr_id': [14981, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'branch': ['refs/pull/14981/head', 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Trigger'], 'shortrev': ['d59b55', 'Trigger'], 'buildnumber': [9583, 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'project': ['', 'Build'], 'builderid': [10, 'Builder'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'workername': ['altair-fifoci', 'Worker']}, 'buildrequest': {'buildrequestid': 197084, 'buildsetid': 44137, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1793792752, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792752, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44137, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793792752, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 196499, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, 'patch': None}]}, 'parentbuild': {'buildid': 196499, 'number': 10927, 'builderid': 27, 'buildrequestid': 197078, 'workerid': 10, 'masterid': 1, 'started_at': 1793792679, 'complete_at': 1793792752, '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/9583'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:20.044432	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-deb-dbg-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/1/builds/10926', 'description': 'Auto build in progress on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-11-04T11:46:19.301946	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-deb-x64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/26/builds/10925', 'description': 'Build succeeded on builder pr-deb-x64', 'type': 'build_status'}
2026-11-04T11:46:18.614556	{'source': 'webserver', 'raw': {'buildid': 196500, 'number': 10926, 'builderid': 1, 'buildrequestid': 197070, 'workerid': 9, 'masterid': 1, 'started_at': 1793792747, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14981', 'Change'], 'pr_id': [14981, 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'builderid': [1, 'Builder'], 'repository': ['', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'project': ['', 'Build'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14981/head', 'Build'], 'workername': ['debian', 'Worker'], 'buildnumber': [10926, 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197070, 'buildsetid': 44136, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1793792747, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10926'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:18.258401	{'source': 'webserver', 'raw': {'buildid': 196495, 'number': 10925, 'builderid': 26, 'buildrequestid': 197077, 'workerid': 9, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792747, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14981', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'builderid': [26, 'Builder'], 'pr_id': [14981, 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'buildername': ['pr-deb-x64', 'Builder'], 'buildnumber': [10925, 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'workername': ['debian', 'Worker'], 'builddir': ['/buildbot/pr-deb-x64', 'Worker'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197077, 'buildsetid': 44136, 'builderid': 26, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10925'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:17.113804	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:46:15.437205	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-04T11:46:05.303406	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-freebsd-x64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/11/builds/10937', 'description': 'Build succeeded on builder pr-freebsd-x64', 'type': 'build_status'}
2026-11-04T11:46:04.346643	{'source': 'webserver', 'raw': {'buildid': 196490, 'number': 10937, 'builderid': 11, 'buildrequestid': 197074, 'workerid': 1, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792711, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'repo': ['dolphin-emu/dolphin', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'buildername': ['pr-freebsd-x64', 'Builder'], 'builderid': [11, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'workername': ['freebsd', 'Worker'], 'buildnumber': [10937, 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'basedir': ['/usr/home/buildbot/freebsd', 'Worker'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'builddir': ['/usr/home/buildbot/freebsd/pr-freebsd-x64', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197074, 'buildsetid': 44136, 'builderid': 11, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1793792675, 'complete_at': 1793792711, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10937'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:03.859701	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-android', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/22/builds/10933', 'description': 'Build succeeded on builder pr-android', 'type': 'build_status'}
2026-11-04T11:46:02.937148	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'lint', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/9/builds/10930', 'description': 'Build succeeded on builder lint', 'type': 'build_status'}
2026-11-04T11:46:02.453307	{'source': 'webserver', 'raw': {'buildid': 196494, 'number': 10933, 'builderid': 22, 'buildrequestid': 197076, 'workerid': 12, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792732, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builderid': [22, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'shortrev': ['d59b55', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'pr_id': [14981, 'Change'], 'buildername': ['pr-android', 'Builder'], 'workername': ['android', 'Worker'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-android', 'Worker'], 'buildnumber': [10933, 'Build'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197076, 'buildsetid': 44136, 'builderid': 22, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1793792675, 'complete_at': 1793792732, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10933'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:01.983146	{'source': 'webserver', 'raw': {'buildid': 196489, 'number': 10930, 'builderid': 9, 'buildrequestid': 197073, 'workerid': 10, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792679, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'branchname': ['pr-14981', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['lint', 'Builder'], 'builderid': [9, 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'branch': ['refs/pull/14981/head', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10930, 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/lint', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197073, 'buildsetid': 44136, 'builderid': 9, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1793792675, 'complete_at': 1793792679, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10930'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:40.027964	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-ubu-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/27/builds/10927', 'description': 'Auto build in progress on builder pr-ubu-x64', 'type': 'build_status'}
2026-11-04T11:45:39.238867	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-freebsd-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/11/builds/10937', 'description': 'Auto build in progress on builder pr-freebsd-x64', 'type': 'build_status'}
2026-11-04T11:45:38.485727	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-deb-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/26/builds/10925', 'description': 'Auto build in progress on builder pr-deb-x64', 'type': 'build_status'}
2026-11-04T11:45:37.736856	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-osx-universal', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/7/builds/10946', 'description': 'Auto build in progress on builder pr-osx-universal', 'type': 'build_status'}

Recent 'build_status' events

2026-11-04T11:46:29.428224	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-appimage-arm64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/50/builds/173', 'description': 'Build succeeded on builder pr-appimage-arm64', 'type': 'build_status'}
2026-11-04T11:46:25.949420	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-ubu-x64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/27/builds/10927', 'description': 'Build succeeded on builder pr-ubu-x64', 'type': 'build_status'}
2026-11-04T11:46:25.026050	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-appimage-x64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/49/builds/179', 'description': 'Build succeeded on builder pr-appimage-x64', 'type': 'build_status'}
2026-11-04T11:46:20.044432	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-deb-dbg-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/1/builds/10926', 'description': 'Auto build in progress on builder pr-deb-dbg-x64', 'type': 'build_status'}
2026-11-04T11:46:19.301946	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-deb-x64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/26/builds/10925', 'description': 'Build succeeded on builder pr-deb-x64', 'type': 'build_status'}
2026-11-04T11:46:05.303406	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-freebsd-x64', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/11/builds/10937', 'description': 'Build succeeded on builder pr-freebsd-x64', 'type': 'build_status'}
2026-11-04T11:46:03.859701	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-android', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/22/builds/10933', 'description': 'Build succeeded on builder pr-android', 'type': 'build_status'}
2026-11-04T11:46:02.937148	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'lint', 'pr': 14981, 'success': True, 'pending': False, 'url': 'https://dolphin.ci/#/builders/9/builds/10930', 'description': 'Build succeeded on builder lint', 'type': 'build_status'}
2026-11-04T11:45:40.027964	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-ubu-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/27/builds/10927', 'description': 'Auto build in progress on builder pr-ubu-x64', 'type': 'build_status'}
2026-11-04T11:45:39.238867	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-freebsd-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/11/builds/10937', 'description': 'Auto build in progress on builder pr-freebsd-x64', 'type': 'build_status'}
2026-11-04T11:45:38.485727	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-deb-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/26/builds/10925', 'description': 'Auto build in progress on builder pr-deb-x64', 'type': 'build_status'}
2026-11-04T11:45:37.736856	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-osx-universal', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/7/builds/10946', 'description': 'Auto build in progress on builder pr-osx-universal', 'type': 'build_status'}
2026-11-04T11:45:36.923594	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-win-arm64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/13/builds/10926', 'description': 'Auto build in progress on builder pr-win-arm64', 'type': 'build_status'}
2026-11-04T11:45:36.269037	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-android', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/22/builds/10933', 'description': 'Auto build in progress on builder pr-android', 'type': 'build_status'}
2026-11-04T11:45:35.530839	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'lint', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/9/builds/10930', 'description': 'Auto build in progress on builder lint', 'type': 'build_status'}
2026-11-04T11:45:16.973114	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-flatpak-arm64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/44/builds/6015', 'description': 'Auto build in progress on builder pr-flatpak-arm64', 'type': 'build_status'}
2026-11-04T11:45:16.263633	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-flatpak-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/43/builds/6075', 'description': 'Auto build in progress on builder pr-flatpak-x64', 'type': 'build_status'}
2026-11-04T11:44:38.701733	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-appimage-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/49/builds/179', 'description': 'Auto build in progress on builder pr-appimage-x64', 'type': 'build_status'}
2026-11-04T11:44:37.978253	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-appimage-arm64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/#/builders/50/builds/173', 'description': 'Auto build in progress on builder pr-appimage-arm64', 'type': 'build_status'}
2026-11-04T11:44:35.448529	{'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'lint', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/', 'description': 'Auto build pending', 'type': 'build_status'}
2026-11-04T11:44:34.684378	{'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-appimage-arm64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/', 'description': 'Auto build pending', 'type': 'build_status'}
2026-11-04T11:44:33.776494	{'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-appimage-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/', 'description': 'Auto build pending', 'type': 'build_status'}
2026-11-04T11:44:32.956015	{'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-flatpak-arm64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/', 'description': 'Auto build pending', 'type': 'build_status'}
2026-11-04T11:44:32.063678	{'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-flatpak-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/', 'description': 'Auto build pending', 'type': 'build_status'}
2026-11-04T11:44:31.251331	{'source': 'prbuilder', 'repo': 'dolphin-emu/dolphin', 'hash': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'shortrev': 'd59b55', 'service': 'pr-freebsd-x64', 'pr': 14981, 'success': False, 'pending': True, 'url': 'https://dolphin.ci/', 'description': 'Auto build pending', 'type': 'build_status'}

Recent 'command_message' events

2026-11-03T04:33:32.849720	{'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14976', 'type': 'command_message'}
2026-11-03T00:54:46.597895	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14974', 'type': 'command_message'}
2026-11-03T00:54:40.466839	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14973', 'type': 'command_message'}
2026-11-03T00:54:34.946966	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14971', 'type': 'command_message'}
2026-11-03T00:54:29.214769	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14970', 'type': 'command_message'}
2026-11-03T00:54:22.253871	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14968', 'type': 'command_message'}
2026-11-03T00:54:17.087271	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14969', 'type': 'command_message'}
2026-11-03T00:48:44.202589	{'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14923', 'type': 'command_message'}
2026-11-02T23:13:58.810667	{'source': 'discord', 'who': 'oatmealdome', 'what': '<@1320924779556900984> please rebuild 14972', 'type': 'command_message'}
2026-11-02T17:11:49.601973	{'source': 'discord', 'who': 'josjuice', 'what': '<@1320924779556900984> please rebuild 14962', 'type': 'command_message'}
2026-11-02T01:43:57.146928	{'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14969', 'type': 'command_message'}
2026-11-02T01:38:36.056172	{'source': 'discord', 'who': 'billiard26', 'what': '<@1320924779556900984> please rebuild PR 14968', 'type': 'command_message'}

Recent 'dev_wark' events

2026-11-03T04:33:32.849747	{'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-03T00:48:44.202673	{'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-02T01:43:57.146980	{'source': 'discord', 'accepted': True, 'type': 'dev_wark'}
2026-11-02T01:38:36.056200	{'source': 'discord', 'accepted': True, 'type': 'dev_wark'}

Recent 'gh_issue_comment' events

2026-11-04T08:34:25.900706	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'ellierocks', 'action': 'created', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6626385853', 'safe_author': False, 'body': '> Render to Main and the split adjustment seems to work properly now with KDE/KWin.\r\n\r\nnice! I think this is ready to merge but the flatpak builders need to be rerun. Other small issues like this may continue to pop up, especially when commits touch Qt changes will need to be tested on xcb and wayland in the future.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 18, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-04T08:34:23Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6626385853', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6626385853', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6626385853, 'node_id': 'IC_kwDOALCn2M8AAAABivafvQ', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T08:34:23Z', 'updated_at': '2026-11-04T08:34:23Z', 'body': '> Render to Main and the split adjustment seems to work properly now with KDE/KWin.\r\n\r\nnice! I think this is ready to merge but the flatpak builders need to be rerun. Other small issues like this may continue to pop up, especially when commits touch Qt changes will need to be tested on xcb and wayland in the future.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6626385853/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-04T06:32:08.748882	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'created', 'id': 13, 'title': 'build(deps): bump tornado from 6.5.8 to 6.5.9', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/13#issuecomment-6624314141', 'safe_author': False, 'body': 'Superseded by #18.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13', 'repository_url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/events', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/13', 'id': 5750894885, 'node_id': 'PR_kwDOCriaAc8AAAABHMVI4A', 'number': 13, 'title': 'build(deps): bump tornado from 6.5.8 to 6.5.9', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-10-07T19:48:10Z', 'updated_at': '2026-11-04T06:32:06Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/13', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/13', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/13.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/13.patch', 'merged_at': None}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.5.9.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/75ef8b1cfa0e658aceb17c5a810ad1c74dc69bc7"><code>75ef8b1</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3719">#3719</a> from bdarnell/fixes-659</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/3590cb4566d363331c294cfa63c5035ae2c32c87"><code>3590cb4</code></a> test: Hardcode SimpleAsyncHTTPClient in HTTP1xxLimitTestCase</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/9fc5d6d9fff435066836d165d0f1f6ebb067fb9e"><code>9fc5d6d</code></a> test: Make tracemalloc optional in httpclient_test</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/555a2ee9a20275d6dfde879977fce58d02e7898a"><code>555a2ee</code></a> iostream: Treat connection resets as a clean close in read_until_close</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/3ba622f2ecb75226a8e64d4ee96b7045fc4c8a64"><code>3ba622f</code></a> Release notes and version bump for 6.5.9</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/41eea68aba54e8ecaafc1b777dc5c104d289a290"><code>41eea68</code></a> test: Fix some test issues only found by our custom tox config</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ab1a778defaccd0dde9c1c419578e3a1777a9eeb"><code>ab1a778</code></a> Merge remote-tracking branch \'bdarnell/claude/asynchttpclient-streaming-memor...</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/437ab5f76565403b3403438d2e555d11f8128d32"><code>437ab5f</code></a> web: Do not follow symlinks out of the static directory</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/03945136ea9746eccf61caf88edae39642e59c93"><code>0394513</code></a> httputil: Apply the argument count limit to query strings</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/b798f8322a15ba8b6ef725d698d1037024139714"><code>b798f83</code></a> http1connection: Return after reading the response that follows a 1xx</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.5.9">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tornado&package-manager=uv&previous-version=6.5.8&new-version=6.5.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\'t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolphin-emu/netplay-index/network/alerts).\n\n</details>', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments/6624314141', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/13#issuecomment-6624314141', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13', 'id': 6624314141, 'node_id': 'IC_kwDOCriaAc8AAAABitcDHQ', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T06:32:06Z', 'updated_at': '2026-11-04T06:32:06Z', 'body': 'Superseded by #18.', 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments/6624314141/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': {'id': 29110, 'client_id': 'Iv1.4f9a6346434f815e', 'slug': 'dependabot', 'node_id': 'MDM6QXBwMjkxMTA=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'Dependabot', 'description': 'GitHub Dependabot', 'external_url': 'https://dependabot-api.githubapp.com', 'html_url': 'https://github.com/apps/dependabot', 'created_at': '2019-04-16T22:34:25Z', 'updated_at': '2026-04-27T17:22:53Z', 'permissions': {'actions': 'write', 'checks': 'write', 'contents': 'write', 'issues': 'write', 'members': 'read', 'metadata': 'read', 'packages': 'read', 'pull_requests': 'write', 'statuses': 'read', 'vulnerability_alerts': 'read', 'workflows': 'write'}, 'events': ['check_suite', 'issues', 'issue_comment', 'label', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'repository']}, 'minimized': None}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-04T00:44:02.879168	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6619350519', 'safe_author': True, 'body': 'Make now uses the lowest of either half your cores (e.g. -j8 if you have 16 cores) or half your memory in gigabytes (e.g. -j8 if you have 16 gigs.) I think this is a conservative enough number that still speeds things up considerably', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 8, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-04T00:43:51Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional unless `ENABLE_LOCALIZATION` is set to `OFF`, and should make people compiling from Windows on Arm (all zero of them) be able to have localization if they install make. The previous behavior was to not have translations if gettext was not present on the host system (and probably to fail on WoA since it tried running a x86_32 executable.)', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6619350519', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6619350519', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6619350519, 'node_id': 'IC_kwDOALCn2M8AAAABiotF9w', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T00:43:51Z', 'updated_at': '2026-11-04T00:43:51Z', 'body': 'Make now uses the lowest of either half your cores (e.g. -j8 if you have 16 cores) or half your memory in gigabytes (e.g. -j8 if you have 16 gigs.) I think this is a conservative enough number that still speeds things up considerably', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6619350519/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T00:42:00Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15764, 'watchers_count': 15764, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15764, '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': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-04T00:35:21.502572	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6619218680', 'safe_author': True, 'body': "> Maybe just use the value from https://cmake.org/cmake/help/latest/envvar/CMAKE_BUILD_PARALLEL_LEVEL.html so people can use as many cores as they want, if that's easy?\r\n\r\nWe can't do that sadly, because this value isn't always set (e.g. Ninja doesn't set it), and when it *is* set it's only at build time, not configure time when we need it. ", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 7, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-04T00:35:18Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional unless `ENABLE_LOCALIZATION` is set to `OFF`, and should make people compiling from Windows on Arm (all zero of them) be able to have localization if they install make. The previous behavior was to not have translations if gettext was not present on the host system (and probably to fail on WoA since it tried running a x86_32 executable.)', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6619218680', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6619218680', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6619218680, 'node_id': 'IC_kwDOALCn2M8AAAABiolC-A', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T00:35:18Z', 'updated_at': '2026-11-04T00:35:18Z', 'body': "> Maybe just use the value from https://cmake.org/cmake/help/latest/envvar/CMAKE_BUILD_PARALLEL_LEVEL.html so people can use as many cores as they want, if that's easy?\r\n\r\nWe can't do that sadly, because this value isn't always set (e.g. Ninja doesn't set it), and when it *is* set it's only at build time, not configure time when we need it. ", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6619218680/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T00:30:21Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15763, 'watchers_count': 15763, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15763, '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': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-04T00:19:15.947336	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618953990', 'safe_author': True, 'body': "> This is because it simply runs `make` which by default runs on a single core. I didn't want to set it to use all processors since it could get OOM killed on systems with a low amount of memory, however I can probably work out some math formula that does _some_ parallelization without hogging resources.\r\n\r\nMaybe just use the value from https://cmake.org/cmake/help/latest/envvar/CMAKE_BUILD_PARALLEL_LEVEL.html so people can use as many cores as they want, if that's easy?", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 6, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-04T00:19:13Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional unless `ENABLE_LOCALIZATION` is set to `OFF`, and should make people compiling from Windows on Arm (all zero of them) be able to have localization if they install make. The previous behavior was to not have translations if gettext was not present on the host system (and probably to fail on WoA since it tried running a x86_32 executable.)', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618953990', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618953990', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6618953990, 'node_id': 'IC_kwDOALCn2M8AAAABioU5Bg', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T00:19:13Z', 'updated_at': '2026-11-04T00:19:13Z', 'body': "> This is because it simply runs `make` which by default runs on a single core. I didn't want to set it to use all processors since it could get OOM killed on systems with a low amount of memory, however I can probably work out some math formula that does _some_ parallelization without hogging resources.\r\n\r\nMaybe just use the value from https://cmake.org/cmake/help/latest/envvar/CMAKE_BUILD_PARALLEL_LEVEL.html so people can use as many cores as they want, if that's easy?", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618953990/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T23:35:35Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15762, 'watchers_count': 15762, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15762, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-04T00:17:25.136470	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618922297', 'safe_author': True, 'body': "Probably not a huge deal for it to take a long time to compile as long as it's printing some output. Most people shouldn't hit this path anyways, I think.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 5, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-04T00:17:15Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional unless `ENABLE_LOCALIZATION` is set to `OFF`, and should make people compiling from Windows on Arm (all zero of them) be able to have localization if they install make. The previous behavior was to not have translations if gettext was not present on the host system (and probably to fail on WoA since it tried running a x86_32 executable.)', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618922297', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618922297', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6618922297, 'node_id': 'IC_kwDOALCn2M8AAAABioS9OQ', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T00:17:15Z', 'updated_at': '2026-11-04T00:17:15Z', 'body': "Probably not a huge deal for it to take a long time to compile as long as it's printing some output. Most people shouldn't hit this path anyways, I think.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618922297/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T23:35:35Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15762, 'watchers_count': 15762, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15762, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-04T00:13:17.737484	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618857315', 'safe_author': True, 'body': "> Edit: Enabling all the USES_TERMINAL_ options seems to make the verbosity better?\r\n\r\nOh wow yes it does. It is *very* verbose. This is better than silence though.\r\n\r\n> and it's also maybe not making good use of multiple cores, but maybe that's the fault of their build system?\r\n\r\nThis is because it simply runs `make` which by default runs on a single core. I didn't want to set it to use all processors since it could get OOM killed on systems with a low amount of memory, however I can probably work out some math formula that does *some* parallelization without hogging resources.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 4, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-04T00:13:16Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional unless `ENABLE_LOCALIZATION` is set to `OFF`, and should make people compiling from Windows on Arm (all zero of them) be able to have localization if they install make. The previous behavior was to not have translations if gettext was not present on the host system (and probably to fail on WoA since it tried running a x86_32 executable.)', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618857315', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618857315', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6618857315, 'node_id': 'IC_kwDOALCn2M8AAAABioO_Yw', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T00:13:15Z', 'updated_at': '2026-11-04T00:13:15Z', 'body': "> Edit: Enabling all the USES_TERMINAL_ options seems to make the verbosity better?\r\n\r\nOh wow yes it does. It is *very* verbose. This is better than silence though.\r\n\r\n> and it's also maybe not making good use of multiple cores, but maybe that's the fault of their build system?\r\n\r\nThis is because it simply runs `make` which by default runs on a single core. I didn't want to set it to use all processors since it could get OOM killed on systems with a low amount of memory, however I can probably work out some math formula that does *some* parallelization without hogging resources.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618857315/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T23:35:35Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15762, 'watchers_count': 15762, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15762, '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': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T23:58:46.804785	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618431736', 'safe_author': True, 'body': "The console shows no output for a very long time while building Gettext, and it's also maybe not making good use of multiple cores, but maybe that's the fault of their build system?\r\n\r\nEdit: Enabling all the USES_TERMINAL_ options seems to make the verbosity better?\r\nhttps://cmake.org/cmake/help/latest/module/ExternalProject.html#terminal-access-options", 'raw': {'action': 'edited', 'changes': {'body': {'from': "The console shows no output for a very long time while building Gettext, and it's also maybe not making good use of multiple cores, but maybe that's the fault of their build system?"}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-03T23:47:08Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional unless `ENABLE_LOCALIZATION` is set to `OFF`, and should make people compiling from Windows on Arm (all zero of them) be able to have localization if they install make. The previous behavior was to not have translations if gettext was not present on the host system (and probably to fail on WoA since it tried running a x86_32 executable.)', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618431736', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618431736', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6618431736, 'node_id': 'IC_kwDOALCn2M8AAAABin1A-A', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T23:47:08Z', 'updated_at': '2026-11-03T23:58:45Z', 'body': "The console shows no output for a very long time while building Gettext, and it's also maybe not making good use of multiple cores, but maybe that's the fault of their build system?\r\n\r\nEdit: Enabling all the USES_TERMINAL_ options seems to make the verbosity better?\r\nhttps://cmake.org/cmake/help/latest/module/ExternalProject.html#terminal-access-options", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618431736/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T23:35:35Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15762, 'watchers_count': 15762, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15762, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T23:47:11.021872	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618431736', 'safe_author': True, 'body': "The console shows no output for a very long time while building Gettext, and it's also maybe not making good use of multiple cores, but maybe that's the fault of their build system?", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 3, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-03T23:47:08Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional unless `ENABLE_LOCALIZATION` is set to `OFF`, and should make people compiling from Windows on Arm (all zero of them) be able to have localization if they install make. The previous behavior was to not have translations if gettext was not present on the host system (and probably to fail on WoA since it tried running a x86_32 executable.)', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618431736', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6618431736', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6618431736, 'node_id': 'IC_kwDOALCn2M8AAAABin1A-A', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T23:47:08Z', 'updated_at': '2026-11-03T23:47:08Z', 'body': "The console shows no output for a very long time while building Gettext, and it's also maybe not making good use of multiple cores, but maybe that's the fault of their build system?", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6618431736/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T23:35:35Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15762, 'watchers_count': 15762, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15762, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T22:35:03.653307	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14962, 'title': 'Add Wayland support (Linux only)', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6617215735', 'safe_author': True, 'body': 'Render to Main and the split adjustment seems to work properly now with KDE/KWin.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 17, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-03T22:35:01Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6617215735', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6617215735', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6617215735, 'node_id': 'IC_kwDOALCn2M8AAAABimqy9w', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T22:35:01Z', 'updated_at': '2026-11-03T22:35:01Z', 'body': 'Render to Main and the split adjustment seems to work properly now with KDE/KWin.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6617215735/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T20:54:55Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15761, 'watchers_count': 15761, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15761, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T22:22:58.329891	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6616920681', 'safe_author': True, 'body': '> My initial thinking is that it should be possible to build without translations with an explicit option.\r\n\r\nThis is now the behavior', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-03T22:22:56Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional unless `ENABLE_LOCALIZATIONS` is set to `OFF`, and should make people compiling from Windows on Arm (all zero of them) be able to have localization if they install make. The previous behavior was to not have translations if gettext was not present on the host system (and probably to fail on WoA since it tried running a x86_32 executable.)', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6616920681', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6616920681', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6616920681, 'node_id': 'IC_kwDOALCn2M8AAAABimYyaQ', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T22:22:56Z', 'updated_at': '2026-11-03T22:22:56Z', 'body': '> My initial thinking is that it should be possible to build without translations with an explicit option.\r\n\r\nThis is now the behavior', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6616920681/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T20:54:55Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15761, 'watchers_count': 15761, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15761, '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': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T22:15:36.286738	{'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'author': 'jordan-woyak', 'action': 'created', 'id': 198, 'title': 'linux-buildbot: Generate AppImages', 'url': 'https://github.com/dolphin-emu/sadm/pull/198#issuecomment-6616767237', 'safe_author': True, 'body': 'Our CI seems to have an AppImage builder these days. Is this PR still relevant?', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198', 'repository_url': 'https://api.github.com/repos/dolphin-emu/sadm', 'labels_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/events', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/198', 'id': 2511309347, 'node_id': 'PR_kwDOALAO3s56tqeA', 'number': 198, 'title': 'linux-buildbot: Generate AppImages', 'user': {'login': 'GT190', 'id': 169302274, 'node_id': 'U_kgDOChdZAg', 'avatar_url': 'https://avatars.githubusercontent.com/u/169302274?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/GT190', 'html_url': 'https://github.com/GT190', 'followers_url': 'https://api.github.com/users/GT190/followers', 'following_url': 'https://api.github.com/users/GT190/following{/other_user}', 'gists_url': 'https://api.github.com/users/GT190/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/GT190/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/GT190/subscriptions', 'organizations_url': 'https://api.github.com/users/GT190/orgs', 'repos_url': 'https://api.github.com/users/GT190/repos', 'events_url': 'https://api.github.com/users/GT190/events{/privacy}', 'received_events_url': 'https://api.github.com/users/GT190/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2024-09-06T23:21:02Z', 'updated_at': '2026-11-03T22:15:24Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/pulls/198', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/198', 'diff_url': 'https://github.com/dolphin-emu/sadm/pull/198.diff', 'patch_url': 'https://github.com/dolphin-emu/sadm/pull/198.patch', 'merged_at': None}, 'body': 'This aims to add AppImage building to Dolphins CI Infrastructure.\r\n\r\nRequires https://github.com/dolphin-emu/dolphin/pull/13055', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/reactions', 'total_count': 2, '+1': 2, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments/6616767237', 'html_url': 'https://github.com/dolphin-emu/sadm/pull/198#issuecomment-6616767237', 'issue_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/198', 'id': 6616767237, 'node_id': 'IC_kwDOALAO3s8AAAABimPbBQ', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T22:15:24Z', 'updated_at': '2026-11-03T22:15:24Z', 'body': 'Our CI seems to have an AppImage builder these days. Is this PR still relevant?', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments/6616767237/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11538142, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTUzODE0Mg==', 'name': 'sadm', 'full_name': 'dolphin-emu/sadm', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/sadm', 'description': 'Scripts and configurations for the Dolphin Emulator infrastructure', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/sadm', 'forks_url': 'https://api.github.com/repos/dolphin-emu/sadm/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/sadm/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/sadm/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/sadm/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/sadm/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/sadm/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/sadm/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/sadm/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/sadm/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/sadm/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/sadm/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/sadm/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/sadm/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/sadm/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/sadm/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/sadm/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/sadm/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/sadm/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/sadm/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/sadm/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/sadm/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/sadm/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/sadm/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/sadm/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/sadm/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/sadm/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/sadm/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/sadm/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/sadm/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/sadm/deployments', 'created_at': '2013-07-19T22:07:05Z', 'updated_at': '2026-11-02T23:28:08Z', 'pushed_at': '2026-11-02T23:28:04Z', 'git_url': 'git://github.com/dolphin-emu/sadm.git', 'ssh_url': 'git@github.com:dolphin-emu/sadm.git', 'clone_url': 'https://github.com/dolphin-emu/sadm.git', 'svn_url': 'https://github.com/dolphin-emu/sadm', 'homepage': '', 'size': 1356, 'stargazers_count': 50, 'watchers_count': 50, 'language': 'Nix', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 42, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 4, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': [], 'visibility': 'public', 'forks': 42, 'open_issues': 4, 'watchers': 50, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T22:05:24.126380	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6616574307', 'safe_author': True, 'body': 'My initial thinking is that it should be possible to build without translations with an explicit option.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'id': 6188052610, 'node_id': 'PR_kwDOALCn2M8AAAABMnsRPQ', 'number': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-11-03T17:44:05Z', 'updated_at': '2026-11-03T22:05:22Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14979.patch', 'merged_at': None}, 'body': 'This change also makes gettext no longer optional, since "Translations are missing because you didn\'t have this specific program installed during compilation" is not desirable behavior imo.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979/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/14979/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6616574307', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#issuecomment-6616574307', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14979', 'id': 6616574307, 'node_id': 'IC_kwDOALCn2M8AAAABimDpYw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T22:05:22Z', 'updated_at': '2026-11-03T22:05:22Z', 'body': 'My initial thinking is that it should be possible to build without translations with an explicit option.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6616574307/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T20:54:55Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15761, 'watchers_count': 15761, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15761, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T20:25:16.756110	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'created', 'id': 13958, 'title': 'Added guide for beginners', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13958#issuecomment-6614611264', 'safe_author': True, 'body': 'I think this is best off being closed.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13958', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13958/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13958/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13958/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13958', 'id': 3436514741, 'node_id': 'PR_kwDOALCn2M6pnqcX', 'number': 13958, 'title': 'Added guide for beginners', 'user': {'login': 'Monochrome-debug', 'id': 172549020, 'node_id': 'U_kgDOCkjjnA', 'avatar_url': 'https://avatars.githubusercontent.com/u/172549020?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Monochrome-debug', 'html_url': 'https://github.com/Monochrome-debug', 'followers_url': 'https://api.github.com/users/Monochrome-debug/followers', 'following_url': 'https://api.github.com/users/Monochrome-debug/following{/other_user}', 'gists_url': 'https://api.github.com/users/Monochrome-debug/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Monochrome-debug/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Monochrome-debug/subscriptions', 'organizations_url': 'https://api.github.com/users/Monochrome-debug/orgs', 'repos_url': 'https://api.github.com/users/Monochrome-debug/repos', 'events_url': 'https://api.github.com/users/Monochrome-debug/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Monochrome-debug/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'closed', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 7, 'created_at': '2025-09-20T03:28:53Z', 'updated_at': '2026-11-03T20:25:14Z', 'closed_at': '2026-11-03T20:25:13Z', '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/13958', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13958', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13958.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13958.patch', 'merged_at': None}, 'body': 'This is to help people new to contributing to an emulator like this one', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13958/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/13958/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6614611264', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13958#issuecomment-6614611264', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13958', 'id': 6614611264, 'node_id': 'IC_kwDOALCn2M8AAAABikL1QA', 'user': {'login': 'JosJuice', 'id': 6716818, 'node_id': 'MDQ6VXNlcjY3MTY4MTg=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6716818?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JosJuice', 'html_url': 'https://github.com/JosJuice', 'followers_url': 'https://api.github.com/users/JosJuice/followers', 'following_url': 'https://api.github.com/users/JosJuice/following{/other_user}', 'gists_url': 'https://api.github.com/users/JosJuice/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JosJuice/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JosJuice/subscriptions', 'organizations_url': 'https://api.github.com/users/JosJuice/orgs', 'repos_url': 'https://api.github.com/users/JosJuice/repos', 'events_url': 'https://api.github.com/users/JosJuice/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JosJuice/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T20:25:13Z', 'updated_at': '2026-11-03T20:25:13Z', 'body': 'I think this is best off being closed.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6614611264/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T17:06:13Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15760, 'watchers_count': 15760, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3378, 'open_issues': 480, 'watchers': 15760, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'JosJuice', 'id': 6716818, 'node_id': 'MDQ6VXNlcjY3MTY4MTg=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6716818?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JosJuice', 'html_url': 'https://github.com/JosJuice', 'followers_url': 'https://api.github.com/users/JosJuice/followers', 'following_url': 'https://api.github.com/users/JosJuice/following{/other_user}', 'gists_url': 'https://api.github.com/users/JosJuice/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JosJuice/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JosJuice/subscriptions', 'organizations_url': 'https://api.github.com/users/JosJuice/orgs', 'repos_url': 'https://api.github.com/users/JosJuice/repos', 'events_url': 'https://api.github.com/users/JosJuice/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JosJuice/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T19:07:04.432816	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'created', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6612985983', 'safe_author': True, 'body': '> If dolphin detects a disc in the disc drive could it be possible to have game appear in game list? Similar to how rcps3 does it?\r\n\r\nYes, but not on this PR. My goal for now is getting the core functionality working reliably, hence the minimal UI changes. Fixing DTK audio games is also higher priority than any other UI changes, which would be made in follow up PRs to this one...', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 20, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T19:07:02Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6612985983', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6612985983', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6612985983, 'node_id': 'IC_kwDOALCn2M8AAAABiioofw', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T19:07:02Z', 'updated_at': '2026-11-03T19:07:02Z', 'body': '> If dolphin detects a disc in the disc drive could it be possible to have game appear in game list? Similar to how rcps3 does it?\r\n\r\nYes, but not on this PR. My goal for now is getting the core functionality working reliably, hence the minimal UI changes. Fixing DTK audio games is also higher priority than any other UI changes, which would be made in follow up PRs to this one...', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6612985983/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T17:06:13Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15760, 'watchers_count': 15760, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15760, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T18:46:38.476862	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Yola-cola', 'action': 'created', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6612567281', 'safe_author': False, 'body': 'I have a little request \r\n\r\nIf dolphin detects a disc in the disc drive could it be possible to have game appear in game list? Similar to how rcps3 does it?\r\n\r\nI want to make sure mods and properties still works for disc games.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 19, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T18:46:35Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6612567281', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6612567281', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6612567281, 'node_id': 'IC_kwDOALCn2M8AAAABiiPE8Q', 'user': {'login': 'Yola-cola', 'id': 53379032, 'node_id': 'MDQ6VXNlcjUzMzc5MDMy', 'avatar_url': 'https://avatars.githubusercontent.com/u/53379032?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Yola-cola', 'html_url': 'https://github.com/Yola-cola', 'followers_url': 'https://api.github.com/users/Yola-cola/followers', 'following_url': 'https://api.github.com/users/Yola-cola/following{/other_user}', 'gists_url': 'https://api.github.com/users/Yola-cola/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Yola-cola/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Yola-cola/subscriptions', 'organizations_url': 'https://api.github.com/users/Yola-cola/orgs', 'repos_url': 'https://api.github.com/users/Yola-cola/repos', 'events_url': 'https://api.github.com/users/Yola-cola/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Yola-cola/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T18:46:35Z', 'updated_at': '2026-11-03T18:46:35Z', 'body': 'I have a little request \r\n\r\nIf dolphin detects a disc in the disc drive could it be possible to have game appear in game list? Similar to how rcps3 does it?\r\n\r\nI want to make sure mods and properties still works for disc games.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6612567281/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T17:06:13Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15760, 'watchers_count': 15760, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15760, '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': 'Yola-cola', 'id': 53379032, 'node_id': 'MDQ6VXNlcjUzMzc5MDMy', 'avatar_url': 'https://avatars.githubusercontent.com/u/53379032?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Yola-cola', 'html_url': 'https://github.com/Yola-cola', 'followers_url': 'https://api.github.com/users/Yola-cola/followers', 'following_url': 'https://api.github.com/users/Yola-cola/following{/other_user}', 'gists_url': 'https://api.github.com/users/Yola-cola/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Yola-cola/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Yola-cola/subscriptions', 'organizations_url': 'https://api.github.com/users/Yola-cola/orgs', 'repos_url': 'https://api.github.com/users/Yola-cola/repos', 'events_url': 'https://api.github.com/users/Yola-cola/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Yola-cola/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T18:08:15.735972	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JMC47', 'action': 'created', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6611750970', 'safe_author': True, 'body': "Update - Datel Discs work, just not from BIOS.  Whatever trick they use to boot from BIOS isn't emulated properly.  Probably icache/dcache shenanigans.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 18, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T18:08:13Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6611750970', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6611750970', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6611750970, 'node_id': 'IC_kwDOALCn2M8AAAABihdQOg', 'user': {'login': 'JMC47', 'id': 6598209, 'node_id': 'MDQ6VXNlcjY1OTgyMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6598209?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JMC47', 'html_url': 'https://github.com/JMC47', 'followers_url': 'https://api.github.com/users/JMC47/followers', 'following_url': 'https://api.github.com/users/JMC47/following{/other_user}', 'gists_url': 'https://api.github.com/users/JMC47/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JMC47/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JMC47/subscriptions', 'organizations_url': 'https://api.github.com/users/JMC47/orgs', 'repos_url': 'https://api.github.com/users/JMC47/repos', 'events_url': 'https://api.github.com/users/JMC47/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JMC47/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T18:08:13Z', 'updated_at': '2026-11-03T18:08:13Z', 'body': "Update - Datel Discs work, just not from BIOS.  Whatever trick they use to boot from BIOS isn't emulated properly.  Probably icache/dcache shenanigans.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6611750970/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T17:06:13Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15760, 'watchers_count': 15760, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, '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': 3378, 'open_issues': 481, 'watchers': 15760, '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': 'JMC47', 'id': 6598209, 'node_id': 'MDQ6VXNlcjY1OTgyMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6598209?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JMC47', 'html_url': 'https://github.com/JMC47', 'followers_url': 'https://api.github.com/users/JMC47/followers', 'following_url': 'https://api.github.com/users/JMC47/following{/other_user}', 'gists_url': 'https://api.github.com/users/JMC47/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JMC47/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JMC47/subscriptions', 'organizations_url': 'https://api.github.com/users/JMC47/orgs', 'repos_url': 'https://api.github.com/users/JMC47/repos', 'events_url': 'https://api.github.com/users/JMC47/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JMC47/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T17:20:35.099650	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JMC47', 'action': 'created', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6610744775', 'safe_author': True, 'body': "I tested this.  On Linux, using a shitty slim portable drive.\r\n\r\nHonestly, it seems pretty good in the games I tested.  Datel games did not work, but maybe that's because of a setting I had on.  I'll try it again later.\r\n\r\nGameCube and Wii.  My only issue was first boot didn't work due to the drive not being initialized, after that everything was fine.", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 17, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T17:20:32Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6610744775', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6610744775', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6610744775, 'node_id': 'IC_kwDOALCn2M8AAAABigf1xw', 'user': {'login': 'JMC47', 'id': 6598209, 'node_id': 'MDQ6VXNlcjY1OTgyMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6598209?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JMC47', 'html_url': 'https://github.com/JMC47', 'followers_url': 'https://api.github.com/users/JMC47/followers', 'following_url': 'https://api.github.com/users/JMC47/following{/other_user}', 'gists_url': 'https://api.github.com/users/JMC47/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JMC47/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JMC47/subscriptions', 'organizations_url': 'https://api.github.com/users/JMC47/orgs', 'repos_url': 'https://api.github.com/users/JMC47/repos', 'events_url': 'https://api.github.com/users/JMC47/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JMC47/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T17:20:32Z', 'updated_at': '2026-11-03T17:20:32Z', 'body': "I tested this.  On Linux, using a shitty slim portable drive.\r\n\r\nHonestly, it seems pretty good in the games I tested.  Datel games did not work, but maybe that's because of a setting I had on.  I'll try it again later.\r\n\r\nGameCube and Wii.  My only issue was first boot didn't work due to the drive not being initialized, after that everything was fine.", 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6610744775/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T17:06:13Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15760, 'watchers_count': 15760, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3378, 'open_issues': 480, 'watchers': 15760, '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': 'JMC47', 'id': 6598209, 'node_id': 'MDQ6VXNlcjY1OTgyMDk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/6598209?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JMC47', 'html_url': 'https://github.com/JMC47', 'followers_url': 'https://api.github.com/users/JMC47/followers', 'following_url': 'https://api.github.com/users/JMC47/following{/other_user}', 'gists_url': 'https://api.github.com/users/JMC47/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JMC47/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JMC47/subscriptions', 'organizations_url': 'https://api.github.com/users/JMC47/orgs', 'repos_url': 'https://api.github.com/users/JMC47/repos', 'events_url': 'https://api.github.com/users/JMC47/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JMC47/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T16:04:15.404350	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'edited', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6608556659', 'safe_author': False, 'body': "> what optical drive are you using? \r\n\r\nIt is a big internal desktop drive. I'm not sure what the model number is. I changed the firmware so much, I don't think even the drive knows what model it is anymore.\r\n\r\n> Are you trying original game discs or backups?\r\n\r\nI was only testing original game discs.\r\n\r\n> There's not a lot to work from in your screenshots, so I'll kindly ask you to retry again with the logs enabled, then \r\npost them here so I can investigate.\r\n\r\nI did, but what I found is strange. I tested a few different games, and some did work. But after opening and closing the disc drive, the same game stopped working. I haven't found any pattern in what makes it work/not work, but when it does not work (more than 90% of the time), this is the output you were asking for (it's the same output every time):\r\n\r\n## First attempt\r\n\r\n```\r\n06:41:696 DiscIO/OpticalDiscBlob.cpp:363 N[DIO]: Optical drive /dev/sr0 runs OmniDrive firmware v1.0.2\r\n06:42:107 DiscIO/OpticalDiscBlob.cpp:382 N[DIO]: GameCube/Wii book type in /dev/sr0, using OmniDrive raw reads\r\n06:51:110 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: FF\r\n07:00:910 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:00:910 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n07:10:749 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n```\r\n\r\n## Second attempt (without opening the disc drive)\r\n\r\n```\r\n08:12:722 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n08:12:722 DiscIO/OpticalDiscBlob.cpp:379 E[DIO]: Failed to read LBA 0 to derive the disc key from /dev/sr0\r\n```", 'raw': {'action': 'edited', 'changes': {'body': {'from': "> what optical drive are you using? \r\n\r\nIt is a big internal desktop drive. I'm not sure what the model number is. I changed the firmware so much, I don't think even the drive knows what model it is anymore.\r\n\r\n> Are you trying original game discs or backups?\r\n\r\nI was only testing original game discs.\r\n\r\n> There's not a lot to work from in your screenshots, so I'll kindly ask you to retry again with the logs enabled, then \r\npost them here so I can investigate.\r\n\r\nI did, but what I found is strange. I tested a few different games, and some did work. But after opening and closing the disc drive, the same game stopped working. I haven't found any pattern in what makes it work/not work, but when it does not work, this is the output you were asking for (it's the same output every time):\r\n\r\n## First attempt\r\n\r\n```\r\n06:41:696 DiscIO/OpticalDiscBlob.cpp:363 N[DIO]: Optical drive /dev/sr0 runs OmniDrive firmware v1.0.2\r\n06:42:107 DiscIO/OpticalDiscBlob.cpp:382 N[DIO]: GameCube/Wii book type in /dev/sr0, using OmniDrive raw reads\r\n06:51:110 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: FF\r\n07:00:910 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:00:910 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n07:10:749 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n```\r\n\r\n## Second attempt (without opening the disc drive)\r\n\r\n```\r\n08:12:722 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n08:12:722 DiscIO/OpticalDiscBlob.cpp:379 E[DIO]: Failed to read LBA 0 to derive the disc key from /dev/sr0\r\n```"}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 16, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T15:53:32Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6608556659', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6608556659', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6608556659, 'node_id': 'IC_kwDOALCn2M8AAAABieaScw', 'user': {'login': 'debug687', 'id': 313431556, 'node_id': 'U_kgDOEq6WBA', 'avatar_url': 'https://avatars.githubusercontent.com/u/313431556?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/debug687', 'html_url': 'https://github.com/debug687', 'followers_url': 'https://api.github.com/users/debug687/followers', 'following_url': 'https://api.github.com/users/debug687/following{/other_user}', 'gists_url': 'https://api.github.com/users/debug687/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/debug687/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/debug687/subscriptions', 'organizations_url': 'https://api.github.com/users/debug687/orgs', 'repos_url': 'https://api.github.com/users/debug687/repos', 'events_url': 'https://api.github.com/users/debug687/events{/privacy}', 'received_events_url': 'https://api.github.com/users/debug687/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T15:53:32Z', 'updated_at': '2026-11-03T16:04:05Z', 'body': "> what optical drive are you using? \r\n\r\nIt is a big internal desktop drive. I'm not sure what the model number is. I changed the firmware so much, I don't think even the drive knows what model it is anymore.\r\n\r\n> Are you trying original game discs or backups?\r\n\r\nI was only testing original game discs.\r\n\r\n> There's not a lot to work from in your screenshots, so I'll kindly ask you to retry again with the logs enabled, then \r\npost them here so I can investigate.\r\n\r\nI did, but what I found is strange. I tested a few different games, and some did work. But after opening and closing the disc drive, the same game stopped working. I haven't found any pattern in what makes it work/not work, but when it does not work (more than 90% of the time), this is the output you were asking for (it's the same output every time):\r\n\r\n## First attempt\r\n\r\n```\r\n06:41:696 DiscIO/OpticalDiscBlob.cpp:363 N[DIO]: Optical drive /dev/sr0 runs OmniDrive firmware v1.0.2\r\n06:42:107 DiscIO/OpticalDiscBlob.cpp:382 N[DIO]: GameCube/Wii book type in /dev/sr0, using OmniDrive raw reads\r\n06:51:110 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: FF\r\n07:00:910 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:00:910 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n07:10:749 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n```\r\n\r\n## Second attempt (without opening the disc drive)\r\n\r\n```\r\n08:12:722 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n08:12:722 DiscIO/OpticalDiscBlob.cpp:379 E[DIO]: Failed to read LBA 0 to derive the disc key from /dev/sr0\r\n```", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6608556659/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T14:47:59Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15759, 'watchers_count': 15759, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3378, 'open_issues': 480, 'watchers': 15759, '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': 'debug687', 'id': 313431556, 'node_id': 'U_kgDOEq6WBA', 'avatar_url': 'https://avatars.githubusercontent.com/u/313431556?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/debug687', 'html_url': 'https://github.com/debug687', 'followers_url': 'https://api.github.com/users/debug687/followers', 'following_url': 'https://api.github.com/users/debug687/following{/other_user}', 'gists_url': 'https://api.github.com/users/debug687/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/debug687/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/debug687/subscriptions', 'organizations_url': 'https://api.github.com/users/debug687/orgs', 'repos_url': 'https://api.github.com/users/debug687/repos', 'events_url': 'https://api.github.com/users/debug687/events{/privacy}', 'received_events_url': 'https://api.github.com/users/debug687/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T15:53:34.139516	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'debug687', 'action': 'created', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6608556659', 'safe_author': False, 'body': "> what optical drive are you using? \r\n\r\nIt is a big internal desktop drive. I'm not sure what the model number is. I changed the firmware so much, I don't think even the drive knows what model it is anymore.\r\n\r\n> Are you trying original game discs or backups?\r\n\r\nI was only testing original game discs.\r\n\r\n> There's not a lot to work from in your screenshots, so I'll kindly ask you to retry again with the logs enabled, then \r\npost them here so I can investigate.\r\n\r\nI did, but what I found is strange. I tested a few different games, and some did work. But after opening and closing the disc drive, the same game stopped working. I haven't found any pattern in what makes it work/not work, but when it does not work, this is the output you were asking for (it's the same output every time):\r\n\r\n## First attempt\r\n\r\n```\r\n06:41:696 DiscIO/OpticalDiscBlob.cpp:363 N[DIO]: Optical drive /dev/sr0 runs OmniDrive firmware v1.0.2\r\n06:42:107 DiscIO/OpticalDiscBlob.cpp:382 N[DIO]: GameCube/Wii book type in /dev/sr0, using OmniDrive raw reads\r\n06:51:110 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: FF\r\n07:00:910 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:00:910 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n07:10:749 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n```\r\n\r\n## Second attempt (without opening the disc drive)\r\n\r\n```\r\n08:12:722 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n08:12:722 DiscIO/OpticalDiscBlob.cpp:379 E[DIO]: Failed to read LBA 0 to derive the disc key from /dev/sr0\r\n```", 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 16, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T15:53:32Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6608556659', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6608556659', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6608556659, 'node_id': 'IC_kwDOALCn2M8AAAABieaScw', 'user': {'login': 'debug687', 'id': 313431556, 'node_id': 'U_kgDOEq6WBA', 'avatar_url': 'https://avatars.githubusercontent.com/u/313431556?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/debug687', 'html_url': 'https://github.com/debug687', 'followers_url': 'https://api.github.com/users/debug687/followers', 'following_url': 'https://api.github.com/users/debug687/following{/other_user}', 'gists_url': 'https://api.github.com/users/debug687/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/debug687/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/debug687/subscriptions', 'organizations_url': 'https://api.github.com/users/debug687/orgs', 'repos_url': 'https://api.github.com/users/debug687/repos', 'events_url': 'https://api.github.com/users/debug687/events{/privacy}', 'received_events_url': 'https://api.github.com/users/debug687/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T15:53:32Z', 'updated_at': '2026-11-03T15:53:32Z', 'body': "> what optical drive are you using? \r\n\r\nIt is a big internal desktop drive. I'm not sure what the model number is. I changed the firmware so much, I don't think even the drive knows what model it is anymore.\r\n\r\n> Are you trying original game discs or backups?\r\n\r\nI was only testing original game discs.\r\n\r\n> There's not a lot to work from in your screenshots, so I'll kindly ask you to retry again with the logs enabled, then \r\npost them here so I can investigate.\r\n\r\nI did, but what I found is strange. I tested a few different games, and some did work. But after opening and closing the disc drive, the same game stopped working. I haven't found any pattern in what makes it work/not work, but when it does not work, this is the output you were asking for (it's the same output every time):\r\n\r\n## First attempt\r\n\r\n```\r\n06:41:696 DiscIO/OpticalDiscBlob.cpp:363 N[DIO]: Optical drive /dev/sr0 runs OmniDrive firmware v1.0.2\r\n06:42:107 DiscIO/OpticalDiscBlob.cpp:382 N[DIO]: GameCube/Wii book type in /dev/sr0, using OmniDrive raw reads\r\n06:51:110 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: FF\r\n07:00:910 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:00:910 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n07:10:749 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n07:20:521 DiscIO/OpticalDiscBlob.cpp:514 E[DIO]: Read error at LBA 0 on /dev/sr0\r\n```\r\n\r\n## Second attempt (without opening the disc drive)\r\n\r\n```\r\n08:12:722 Common/SCSIDevice.cpp:625 E[COMMON]: SCSI opcode C0 failed. Status: 02, Host: 0000, Driver: 0008, Sense Key: 04, ASC: 3E, ASCQ: 02\r\n08:12:722 DiscIO/OpticalDiscBlob.cpp:379 E[DIO]: Failed to read LBA 0 to derive the disc key from /dev/sr0\r\n```", 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6608556659/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T14:47:59Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15759, 'watchers_count': 15759, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3378, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 480, 'license': {'key': 'other', 'name': 'Other', 'spdx_id': 'NOASSERTION', 'url': None, 'node_id': 'MDc6TGljZW5zZTA='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['cpp', 'emulation', 'emulator', 'gamecube', 'wii'], 'visibility': 'public', 'forks': 3378, 'open_issues': 480, 'watchers': 15759, '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': 'debug687', 'id': 313431556, 'node_id': 'U_kgDOEq6WBA', 'avatar_url': 'https://avatars.githubusercontent.com/u/313431556?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/debug687', 'html_url': 'https://github.com/debug687', 'followers_url': 'https://api.github.com/users/debug687/followers', 'following_url': 'https://api.github.com/users/debug687/following{/other_user}', 'gists_url': 'https://api.github.com/users/debug687/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/debug687/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/debug687/subscriptions', 'organizations_url': 'https://api.github.com/users/debug687/orgs', 'repos_url': 'https://api.github.com/users/debug687/repos', 'events_url': 'https://api.github.com/users/debug687/events{/privacy}', 'received_events_url': 'https://api.github.com/users/debug687/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T11:23:59.207608	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'Linkinworm', 'action': 'created', 'id': 14827, 'title': 'Android: Implement Save File Manager', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14827#issuecomment-6602531884', 'safe_author': True, 'body': 'Quick note , import fails should give a more discript reasonings , after some tests I\'ve realised that "import failed" for something like not starting the game first boot isn\'t great, so custom reasoning toasts would help users', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14827', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14827/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14827/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14827/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14827', 'id': 5248387336, 'node_id': 'PR_kwDOALCn2M8AAAABA93Kaw', 'number': 14827, 'title': 'Android: Implement Save File Manager', 'user': {'login': 'Linkinworm', 'id': 32615992, 'node_id': 'MDQ6VXNlcjMyNjE1OTky', 'avatar_url': 'https://avatars.githubusercontent.com/u/32615992?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Linkinworm', 'html_url': 'https://github.com/Linkinworm', 'followers_url': 'https://api.github.com/users/Linkinworm/followers', 'following_url': 'https://api.github.com/users/Linkinworm/following{/other_user}', 'gists_url': 'https://api.github.com/users/Linkinworm/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Linkinworm/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Linkinworm/subscriptions', 'organizations_url': 'https://api.github.com/users/Linkinworm/orgs', 'repos_url': 'https://api.github.com/users/Linkinworm/repos', 'events_url': 'https://api.github.com/users/Linkinworm/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Linkinworm/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 2, 'created_at': '2026-08-25T16:52:00Z', 'updated_at': '2026-11-03T11:23:56Z', '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/14827', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14827', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14827.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14827.patch', 'merged_at': None}, 'body': 'Adds a save file manager allowing users to manage GameCube, Wii, and GBA save files.\r\n\r\nSince gameTDB doesnt have GB/GBA covers I just use colour coding for blocks of saves, this is easier on the eyes than a list of saves\r\n\r\nIncludes everything for importing exporting etc, suports GC GCI folders and .raw for moving saves around, wii saves at least need 1st run. The GBA save manager has some unique features for the GBA implimentation so the user can play on the gameboy player and then move their save easily for linking (pokemon colosium/XD, Sonic advance, what ever other games)\r\n\r\nThe main use for this was originally just for the GBA game saves for the purpose above, but expanded for GC and wii since theres no real easy way to manage save data for those\r\n<img width="720" height="1120" alt="gbasave" src="https://github.com/user-attachments/assets/c39c3736-e3a3-4212-8b94-c08ca0874bc5" />\r\n<img width="720" height="1120" alt="gc" src="https://github.com/user-attachments/assets/7d0ba656-79b8-4c0f-aa6b-ab0cf96c4203" />\r\n<img width="720" height="1120" alt="wii" src="https://github.com/user-attachments/assets/88d23546-fdb3-4bca-87f7-ec48ddbe64f0" />\r\n', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14827/reactions', 'total_count': 2, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 2, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14827/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6602531884', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14827#issuecomment-6602531884', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14827', 'id': 6602531884, 'node_id': 'IC_kwDOALCn2M8AAAABiYqkLA', 'user': {'login': 'Linkinworm', 'id': 32615992, 'node_id': 'MDQ6VXNlcjMyNjE1OTky', 'avatar_url': 'https://avatars.githubusercontent.com/u/32615992?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Linkinworm', 'html_url': 'https://github.com/Linkinworm', 'followers_url': 'https://api.github.com/users/Linkinworm/followers', 'following_url': 'https://api.github.com/users/Linkinworm/following{/other_user}', 'gists_url': 'https://api.github.com/users/Linkinworm/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Linkinworm/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Linkinworm/subscriptions', 'organizations_url': 'https://api.github.com/users/Linkinworm/orgs', 'repos_url': 'https://api.github.com/users/Linkinworm/repos', 'events_url': 'https://api.github.com/users/Linkinworm/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Linkinworm/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T11:23:56Z', 'updated_at': '2026-11-03T11:23:56Z', 'body': 'Quick note , import fails should give a more discript reasonings , after some tests I\'ve realised that "import failed" for something like not starting the game first boot isn\'t great, so custom reasoning toasts would help users', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6602531884/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T08:13:26Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15758, 'watchers_count': 15758, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3377, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 479, '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': 3377, 'open_issues': 479, 'watchers': 15758, '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': 'Linkinworm', 'id': 32615992, 'node_id': 'MDQ6VXNlcjMyNjE1OTky', 'avatar_url': 'https://avatars.githubusercontent.com/u/32615992?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Linkinworm', 'html_url': 'https://github.com/Linkinworm', 'followers_url': 'https://api.github.com/users/Linkinworm/followers', 'following_url': 'https://api.github.com/users/Linkinworm/following{/other_user}', 'gists_url': 'https://api.github.com/users/Linkinworm/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Linkinworm/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Linkinworm/subscriptions', 'organizations_url': 'https://api.github.com/users/Linkinworm/orgs', 'repos_url': 'https://api.github.com/users/Linkinworm/repos', 'events_url': 'https://api.github.com/users/Linkinworm/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Linkinworm/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T10:14:35.778929	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'MayImilae', 'action': 'created', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6600903825', 'safe_author': True, 'body': '> I think it\'s unlikely to cause too many people to try to stick an original GC/Wii game in their standard optical drive, mainly because so few people even have an optical drive these days.\r\n\r\nYea I guess that\'s a good point. We can make adjustments if people start asking about it.\r\n\r\n> An early iteration used the full term inside the tag (like "[OmniDrive]") but the menu became too wide IMO, but this can be reverted or further tweaked, if you think it\'d be more intuitive.\r\n\r\nHonestly I kind of like it saying OmniDrive as a tag and I don\'t think the length is an issue. But I suppose users will have had to already flashed their firmware to OmniDrive and they\'ll have an idea what OD means when they see it.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 15, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T10:14:33Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6600903825', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6600903825', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6600903825, 'node_id': 'IC_kwDOALCn2M8AAAABiXHMkQ', '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-11-03T10:14:33Z', 'updated_at': '2026-11-03T10:14:33Z', 'body': '> I think it\'s unlikely to cause too many people to try to stick an original GC/Wii game in their standard optical drive, mainly because so few people even have an optical drive these days.\r\n\r\nYea I guess that\'s a good point. We can make adjustments if people start asking about it.\r\n\r\n> An early iteration used the full term inside the tag (like "[OmniDrive]") but the menu became too wide IMO, but this can be reverted or further tweaked, if you think it\'d be more intuitive.\r\n\r\nHonestly I kind of like it saying OmniDrive as a tag and I don\'t think the length is an issue. But I suppose users will have had to already flashed their firmware to OmniDrive and they\'ll have an idea what OD means when they see it.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6600903825/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T08:13:26Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15758, 'watchers_count': 15758, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3377, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 478, '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': 3377, 'open_issues': 478, 'watchers': 15758, '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-11-03T09:32:36.231524	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 13653, 'title': 'UICommon/GameFile: File name column will show the directory name for extracted games', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13653#issuecomment-6600080894', 'safe_author': True, 'body': 'This PR has aged a bit. Can you please rebase it on latest master. There have since been some minor changes to these files.', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13653', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13653/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13653/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13653/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13653', 'id': 3055146256, 'node_id': 'PR_kwDOALCn2M6VvgId', 'number': 13653, 'title': 'UICommon/GameFile: File name column will show the directory name for extracted games', 'user': {'login': 'tygyh', 'id': 32486062, 'node_id': 'MDQ6VXNlcjMyNDg2MDYy', 'avatar_url': 'https://avatars.githubusercontent.com/u/32486062?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/tygyh', 'html_url': 'https://github.com/tygyh', 'followers_url': 'https://api.github.com/users/tygyh/followers', 'following_url': 'https://api.github.com/users/tygyh/following{/other_user}', 'gists_url': 'https://api.github.com/users/tygyh/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/tygyh/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/tygyh/subscriptions', 'organizations_url': 'https://api.github.com/users/tygyh/orgs', 'repos_url': 'https://api.github.com/users/tygyh/repos', 'events_url': 'https://api.github.com/users/tygyh/events{/privacy}', 'received_events_url': 'https://api.github.com/users/tygyh/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 7, 'created_at': '2025-05-11T18:37:32Z', 'updated_at': '2026-11-03T09:32:33Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/13653', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13653', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/13653.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/13653.patch', 'merged_at': None}, 'body': 'Rebases #8798', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13653/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/13653/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6600080894', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/13653#issuecomment-6600080894', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/13653', 'id': 6600080894, 'node_id': 'IC_kwDOALCn2M8AAAABiWU9_g', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T09:32:33Z', 'updated_at': '2026-11-03T09:32:33Z', 'body': 'This PR has aged a bit. Can you please rebase it on latest master. There have since been some minor changes to these files.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6600080894/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T08:13:26Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15758, 'watchers_count': 15758, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3376, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 478, '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': 3376, 'open_issues': 478, 'watchers': 15758, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T09:05:23.489277	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6599524923', 'safe_author': True, 'body': 'I mostly agree that the current wording is fine, and I think it\'s unlikely to cause too many people to try to stick an original GC/Wii game in their standard optical drive, mainly because so few people even have an optical drive these days.\r\n\r\ni.e. I think "Boot From Optical Disc" is fine.', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'I mostly agree that the current wording is unlikely to cause too many people to try to stick an original GC/Wii game in their standard optical drive, mainly because so few people even have an optical drive these days.\r\n\r\ni.e. I think "Boot From Optical Disc" is fine.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 14, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T09:04:44Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6599524923', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6599524923', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6599524923, 'node_id': 'IC_kwDOALCn2M8AAAABiVzCOw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T09:03:07Z', 'updated_at': '2026-11-03T09:05:21Z', 'body': 'I mostly agree that the current wording is fine, and I think it\'s unlikely to cause too many people to try to stick an original GC/Wii game in their standard optical drive, mainly because so few people even have an optical drive these days.\r\n\r\ni.e. I think "Boot From Optical Disc" is fine.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6599524923/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T08:13:26Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15758, 'watchers_count': 15758, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3376, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 478, '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': 3376, 'open_issues': 478, 'watchers': 15758, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}
2026-11-03T09:04:46.353701	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6599524923', 'safe_author': True, 'body': 'I mostly agree that the current wording is unlikely to cause too many people to try to stick an original GC/Wii game in their standard optical drive, mainly because so few people even have an optical drive these days.\r\n\r\ni.e. I think "Boot From Optical Disc" is fine.', 'raw': {'action': 'edited', 'changes': {'body': {'from': 'I mostly agree that the current wording is unlikely to cause too many people to try to stick an original GC/Wii game in their standard optical drive, mainly because so few people even have an optical drive these days.'}}, 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'id': 6162397505, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'number': 14974, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 14, 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T09:03:07Z', '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/14974', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'merged_at': None}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/reactions', 'total_count': 6, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 6, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6599524923', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#issuecomment-6599524923', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'id': 6599524923, 'node_id': 'IC_kwDOALCn2M8AAAABiVzCOw', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-03T09:03:07Z', 'updated_at': '2026-11-03T09:04:44Z', 'body': 'I mostly agree that the current wording is unlikely to cause too many people to try to stick an original GC/Wii game in their standard optical drive, mainly because so few people even have an optical drive these days.\r\n\r\ni.e. I think "Boot From Optical Disc" is fine.', 'author_association': 'MEMBER', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6599524923/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-03T08:13:26Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15758, 'watchers_count': 15758, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3376, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 478, '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': 3376, 'open_issues': 478, 'watchers': 15758, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'gh_issue_comment'}

Recent 'gh_pull_request' events

2026-11-04T11:44:21.267464	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'SuperSamus', 'action': 'opened', 'id': 14981, 'title': "State: Don't load savestates during initialization", 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14981', 'head_ref_name': 'dont-load-savestate-during-init', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-04T06:32:10.960478	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'closed', 'id': 13, 'title': 'build(deps): bump tornado from 6.5.8 to 6.5.9', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/13', 'head_ref_name': 'dependabot/uv/tornado-6.5.9', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '051ad48713038eba5bd4bbc13a115c2c8492cfb5', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-04T06:32:05.313411	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'labeled', 'id': 18, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'head_ref_name': 'dependabot/uv/tornado-6.6', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-04T06:32:04.870233	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'labeled', 'id': 18, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'head_ref_name': 'dependabot/uv/tornado-6.6', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-04T06:32:02.495226	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'author': 'dependabot[bot]', 'action': 'opened', 'id': 18, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'head_ref_name': 'dependabot/uv/tornado-6.6', 'safe_author': False, 'base_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-04T00:45:48.250904	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'synchronize', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'head_ref_name': 'vendored-gettext', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-04T00:41:51.827505	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'synchronize', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'head_ref_name': 'vendored-gettext', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '5138b087796db4c3c5d290ef4c383802816ea49e', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-04T00:36:33.882921	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'synchronize', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'head_ref_name': 'vendored-gettext', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '714e59899fb680865d5579051db74961aa39f1d9', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T22:24:52.499938	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'edited', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'head_ref_name': 'vendored-gettext', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': 'f3ad14b5d8c1dba08fc999602cd229c2909c11dc', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T22:22:36.365912	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'edited', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'head_ref_name': 'vendored-gettext', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': 'f3ad14b5d8c1dba08fc999602cd229c2909c11dc', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T22:19:26.917432	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'synchronize', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'head_ref_name': 'vendored-gettext', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': 'f3ad14b5d8c1dba08fc999602cd229c2909c11dc', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T22:04:53.279117	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'opened', 'id': 14980, 'title': 'VideoCommon: allow our custom asset cache to have a single id that references multiple types', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980', 'head_ref_name': 'single_asset_id_multi_type', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T21:00:38.565019	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 14977, 'title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977', 'head_ref_name': 'log-file-no-mutex', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '6633a6e6ca0aefb3c7e1e8c6664cc6a8dc2e9bb9', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T20:25:16.653526	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JosJuice', 'action': 'closed', 'id': 13958, 'title': 'Added guide for beginners', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/13958', 'head_ref_name': 'ReadMe-Suggestion', 'safe_author': True, 'base_sha': '126bbcd72f735fb565bc0b6d566c42c62d876582', 'head_sha': 'd15ca355a23242d80ff0cf41d2162522bc1e4aac', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T19:27:30.329263	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14977, 'title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977', 'head_ref_name': 'log-file-no-mutex', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '56fc67ff8e5d807bdd8d83c2f753b8dba67383fe', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T19:26:53.185150	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14977, 'title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977', 'head_ref_name': 'log-file-no-mutex', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '56fc67ff8e5d807bdd8d83c2f753b8dba67383fe', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T19:26:00.548912	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'synchronize', 'id': 14977, 'title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener with new LogIOFile class.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977', 'head_ref_name': 'log-file-no-mutex', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '56fc67ff8e5d807bdd8d83c2f753b8dba67383fe', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T17:47:25.785024	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'synchronize', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'head_ref_name': 'vendored-gettext', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '8159092533e9160c64df47f9001b55a24ae16633', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T17:44:08.318399	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'opened', 'id': 14979, 'title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979', 'head_ref_name': 'vendored-gettext', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '889421211027958ff6af2264b2ba970b5645b142', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T13:27:00.906391	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'edited', 'id': 14978, 'title': 'CPU: Fix quickly-stopped games hanging Dolphin', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14978', 'head_ref_name': 'quick-stop-hang', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '0436c9f60eb1e815a65f01d5edb6a5a155911553', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T13:25:13.030234	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'opened', 'id': 14978, 'title': 'CPU: Fix quickly-stopped games hanging Dolphin', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14978', 'head_ref_name': 'quick-stop-hang', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': '0436c9f60eb1e815a65f01d5edb6a5a155911553', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T11:08:40.291246	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14977, 'title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener with new LogIOFile class.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977', 'head_ref_name': 'log-file-no-mutex', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T11:01:41.729125	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'opened', 'id': 14977, 'title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener with new LogIOFile class.', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977', 'head_ref_name': 'log-file-no-mutex', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T07:00:16.124967	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'synchronize', 'id': 14774, 'title': 'Refactor the GameCube microphone code', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14774', 'head_ref_name': 'mic-dedup2', 'safe_author': True, 'base_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'head_sha': 'ed0e14952a6797d33e14d9a377fa413c1f2de917', 'merged': False, 'requested_reviewers': [], 'type': 'gh_pull_request'}
2026-11-03T04:44:54.414639	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'closed', 'id': 14972, 'title': 'Minor cleanups with "parenthesized initialization of aggregates".', 'base_ref_name': 'master', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14972', 'head_ref_name': 'paren-init-aggregate', 'safe_author': True, 'base_sha': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'head_sha': 'd08bddeaabbfba79f76407018ab02bdf68fa2d46', 'merged': True, 'requested_reviewers': [], 'type': 'gh_pull_request'}

Recent 'gh_pull_request_comment' events

2026-11-04T08:06:24.515028	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'created', 'id': 14974, 'hash': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465132899', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-04T08:06:09.624462	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'created', 'id': 14974, 'hash': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465130546', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-04T08:05:55.976054	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'created', 'id': 14974, 'hash': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465128178', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-04T08:05:41.144870	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'created', 'id': 14974, 'hash': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465125222', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-04T01:06:59.797650	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14979, 'hash': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462381253', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-04T01:06:23.327440	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14979, 'hash': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462377412', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-04T00:59:40.256345	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14979, 'hash': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462331291', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T23:27:56.046015	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14980, 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461688496', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T23:27:28.467062	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14980, 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461688496', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T23:20:08.827484	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14980, 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461632712', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T23:19:52.971141	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14980, 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461632712', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T23:15:11.588562	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14980, 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461597667', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T22:47:03.278267	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'created', 'id': 14980, 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461368633', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-03T22:11:19.148006	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14980, 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461054030', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T18:59:31.880051	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14977, 'hash': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4459160371', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T18:45:27.088691	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'edited', 'id': 14977, 'hash': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458999905', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T18:44:24.284070	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14977, 'hash': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458999905', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-03T18:44:16.976929	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14977, 'hash': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458998331', 'is_part_of_review': False, 'type': 'gh_pull_request_comment'}
2026-11-03T18:43:59.615426	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'created', 'id': 14977, 'hash': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458995738', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-03T18:21:02.787118	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14977, 'hash': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458611697', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-03T18:21:02.677484	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14977, 'hash': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458722965', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-03T18:21:02.584108	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14977, 'hash': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458648259', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-03T18:21:02.561010	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'created', 'id': 14977, 'hash': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458571166', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-03T12:21:21.900243	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14974, 'hash': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4453291256', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}
2026-11-03T12:21:21.899493	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'created', 'id': 14974, 'hash': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4454423062', 'is_part_of_review': True, 'type': 'gh_pull_request_comment'}

Recent 'gh_pull_request_review' events

2026-11-04T08:06:24.514098	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'submitted', 'pr_id': 14974, 'pr_title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765232256', 'comments': [{'id': 4465132899, 'node_id': 'PRRC_kwDOALCn2M8AAAABCiSFYw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465132899', 'pull_request_review_id': 5765232256, 'diff_hunk': '@@ -251,6 +252,7 @@ class MainWindow final : public QMainWindow\n   bool m_fullscreen_requested = false;\n   bool m_is_screensaver_inhibited = false;\n   std::unique_ptr<BootParameters> m_pending_boot;\n+  std::optional<std::string> m_optical_drive;', 'path': 'Source/Core/DolphinQt/MainWindow.h', 'position': 12, 'original_position': 12, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "This is a leftover from a previous iteration. I'll change it to use `GetInsertedOpticalDrive`, as it can also prevent some edge cases where the core and the UI might end incorrectly pointing to different drives", 'created_at': '2026-11-04T08:06:22Z', 'updated_at': '2026-11-04T08:06:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465132899', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465132899'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465132899'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465132899/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4454462737, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-04T08:06:09.623565	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'submitted', 'pr_id': 14974, 'pr_title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765229058', 'comments': [{'id': 4465130546, 'node_id': 'PRRC_kwDOALCn2M8AAAABCiR8Mg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465130546', 'pull_request_review_id': 5765229058, 'diff_hunk': '@@ -0,0 +1,776 @@\n+// Copyright 2026 Dolphin Emulator Project', 'path': 'Source/Core/Common/SCSIDevice.cpp', 'position': 1, 'original_position': 1, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'I have no particular preference, and I modeled this similar to the previous "Boot from DVD Backup" implementation. It seems we already have precedents for what you\'re suggesting on Core/HW/WiimoteReal and I guess it makes reading the code easier, so I\'ll split there too', 'created_at': '2026-11-04T08:06:07Z', 'updated_at': '2026-11-04T08:06:07Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465130546', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465130546'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465130546'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465130546/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4453291256, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-04T08:05:55.975190	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'submitted', 'pr_id': 14974, 'pr_title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765226107', 'comments': [{'id': 4465128178, 'node_id': 'PRRC_kwDOALCn2M8AAAABCiRy8g', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465128178', 'pull_request_review_id': 5765226107, 'diff_hunk': '@@ -0,0 +1,776 @@\n+// Copyright 2026 Dolphin Emulator Project\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+#include "Common/SCSIDevice.h"\n+\n+#include <algorithm>\n+#include <array>\n+#include <cctype>\n+#include <cerrno>\n+#include <cstddef>\n+#include <filesystem>\n+#include <map>\n+#include <mutex>\n+#include <optional>\n+#include <span>\n+#include <string>\n+#include <string_view>\n+#include <system_error>\n+#include <vector>\n+\n+#include <fmt/format.h>\n+\n+#if defined(_WIN32)\n+#include <windows.h>\n+#include <winioctl.h>\n+\n+#include <ntddscsi.h>\n+#include <ntddstor.h>\n+#elif defined(__linux__) && !defined(__ANDROID__)\n+#include <fcntl.h>\n+#include <scsi/sg.h>\n+#include <sys/ioctl.h>\n+#include <unistd.h>\n+#endif\n+\n+#include "Common/CommonFuncs.h"\n+#include "Common/CommonTypes.h"\n+#include "Common/FileUtil.h"\n+#include "Common/Logging/Log.h"\n+#include "Common/StringUtil.h"\n+#include "Common/Swap.h"\n+\n+namespace Common\n+{\n+SCSIDevice::~SCSIDevice()\n+{\n+  Close();\n+}\n+\n+#if defined(_WIN32)\n+\n+namespace\n+{\n+// Timeout for the TEST UNIT READY that reads drive status. Short, so a spinning-up drive is\n+// reported as such at once instead of blocking until it is ready\n+constexpr u32 STATUS_PROBE_TIMEOUT_SECONDS = 1;\n+}  // namespace\n+\n+namespace\n+{\n+// SCSI_PASS_THROUGH_DIRECT and its sense buffer in one contiguous block, so the kernel can write\n+// sense data at SenseInfoOffset\n+struct SPTDWithSense\n+{\n+  SCSI_PASS_THROUGH_DIRECT sptd;\n+  std::array<u8, 24> sense;\n+};\n+\n+std::wstring ToDevicePath(const std::string& path)\n+{\n+  return UTF8ToWString(R"(\\\\.\\)" + path);\n+}\n+\n+HANDLE OpenDeviceHandle(const std::string& path, DWORD access)\n+{\n+  return CreateFileW(ToDevicePath(path).c_str(), access, FILE_SHARE_READ | FILE_SHARE_WRITE,\n+                     nullptr, OPEN_EXISTING, 0, nullptr);\n+}\n+\n+void DecodeSense(const SPTDWithSense& sptd, SCSISense* sense)\n+{\n+  sense->status = sptd.sptd.ScsiStatus;\n+  sense->sense_key = sptd.sense[2] & 0x0F;\n+  sense->asc = sptd.sense[12];\n+  sense->ascq = sptd.sense[13];\n+}\n+\n+// Returns false only if the OS rejects the IOCTL itself\n+bool SendPassThrough(HANDLE handle, std::span<const u8> cdb, std::span<u8> buffer,\n+                     SCSIDataDirection direction, u32 timeout_seconds, SPTDWithSense* sptd)\n+{\n+  if (cdb.size() > sizeof(SCSI_PASS_THROUGH_DIRECT::Cdb))\n+    return false;\n+\n+  *sptd = {};\n+  sptd->sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT);\n+  sptd->sptd.CdbLength = static_cast<UCHAR>(cdb.size());\n+  sptd->sptd.SenseInfoLength = static_cast<UCHAR>(sptd->sense.size());\n+  sptd->sptd.DataIn = static_cast<UCHAR>(direction);\n+  sptd->sptd.DataTransferLength = static_cast<ULONG>(buffer.size());\n+  sptd->sptd.TimeOutValue = timeout_seconds;\n+  sptd->sptd.DataBuffer = buffer.empty() ? nullptr : buffer.data();\n+  sptd->sptd.SenseInfoOffset = static_cast<ULONG>(offsetof(SPTDWithSense, sense));\n+  std::ranges::copy(cdb, sptd->sptd.Cdb);\n+\n+  DWORD bytes_returned = 0;\n+  return DeviceIoControl(handle, IOCTL_SCSI_PASS_THROUGH_DIRECT, sptd, sizeof(*sptd), sptd,\n+                         sizeof(*sptd), &bytes_returned, nullptr) != FALSE;\n+}\n+\n+std::string ReadDescriptorString(std::span<const u8> data, u32 offset)\n+{\n+  if (offset == 0 || offset >= data.size())\n+    return {};\n+  const std::string_view text(reinterpret_cast<const char*>(data.data()) + offset,\n+                              data.size() - offset);\n+  return std::string(StripWhitespace(text.substr(0, text.find(\'\\0\'))));\n+}\n+}  // namespace\n+\n+bool SCSIDevice::IsSupported()\n+{\n+  return true;\n+}\n+\n+bool SCSIDevice::Open(const std::string& path, bool read_write)\n+{\n+  Close();\n+\n+  DWORD desired_access = GENERIC_READ;\n+  if (read_write)\n+    desired_access |= GENERIC_WRITE;\n+\n+  HANDLE handle = OpenDeviceHandle(path, desired_access);\n+\n+  // Standard user accounts can be refused GENERIC_WRITE, so fall back to read-only before failing\n+  if (handle == INVALID_HANDLE_VALUE && read_write)\n+    handle = OpenDeviceHandle(path, GENERIC_READ);\n+\n+  if (handle == INVALID_HANDLE_VALUE)\n+  {\n+    ERROR_LOG_FMT(COMMON, "Failed to open optical drive {}: {}", path, GetLastErrorString());\n+    return false;\n+  }\n+\n+  m_handle = handle;\n+  m_path = path;\n+  return true;\n+}\n+\n+void SCSIDevice::Close()\n+{\n+  if (m_handle != nullptr)\n+  {\n+    CloseHandle(m_handle);\n+    m_handle = nullptr;\n+  }\n+}\n+\n+bool SCSIDevice::IsOpen() const\n+{\n+  return m_handle != nullptr;\n+}\n+\n+bool SCSIDevice::SendCommand(std::span<const u8> cdb, std::span<u8> buffer,\n+                             SCSIDataDirection direction, u32 timeout_seconds,\n+                             SCSISense* sense) const\n+{\n+  if (!IsOpen() || cdb.empty())\n+    return false;\n+\n+  DEBUG_LOG_FMT(COMMON, "Sending SCSI opcode {:02X} to {} ({} data bytes)", cdb[0], m_path,\n+                buffer.size());\n+\n+  SPTDWithSense sptd{};\n+  if (!SendPassThrough(m_handle, cdb, buffer, direction, timeout_seconds, &sptd))\n+  {\n+    ERROR_LOG_FMT(COMMON, "SCSI passthrough for opcode {:02X} failed: {}", cdb[0],\n+                  GetLastErrorString());\n+    return false;\n+  }\n+\n+  SCSISense decoded;\n+  DecodeSense(sptd, &decoded);\n+  if (sense != nullptr)\n+    *sense = decoded;\n+\n+  // Any status other than 0x00 (GOOD) is a device-side failure\n+  if (decoded.status != 0)\n+  {\n+    ERROR_LOG_FMT(COMMON,\n+                  "SCSI opcode {:02X} failed. Status: {:02X}, Sense Key: {:02X}, ASC: {:02X}, "\n+                  "ASCQ: {:02X}",\n+                  cdb[0], decoded.status, decoded.sense_key, decoded.asc, decoded.ascq);\n+    return false;\n+  }\n+  return true;\n+}\n+\n+OpticalDriveStatus SCSIDevice::GetDriveStatus(const std::string& path)\n+{\n+  HANDLE handle = OpenDeviceHandle(path, GENERIC_READ | GENERIC_WRITE);\n+  if (handle == INVALID_HANDLE_VALUE)\n+    handle = OpenDeviceHandle(path, GENERIC_READ);\n+\n+  if (handle == INVALID_HANDLE_VALUE)\n+  {\n+    const DWORD error = GetLastError();\n+    if (error == ERROR_NOT_READY || error == ERROR_MEDIA_CHANGED)\n+      return OpticalDriveStatus::NoDisc;\n+    return OpticalDriveStatus::NotReadyOther;\n+  }\n+\n+  // TEST UNIT READY (opcode 0x00). A spinning-up drive answers it at once with a CHECK CONDITION\n+  // (sense 02/04/01), so a short timeout returns the real state instead of waiting for the drive\n+  constexpr std::array<u8, 6> cdb{};\n+  DEBUG_LOG_FMT(COMMON, "Sending SCSI opcode {:02X} to {} (0 data bytes)", cdb[0], path);\n+  SPTDWithSense sptd{};\n+  const bool sent =\n+      SendPassThrough(handle, cdb, {}, SCSIDataDirection::In, STATUS_PROBE_TIMEOUT_SECONDS, &sptd);', 'path': 'Source/Core/Common/SCSIDevice.cpp', 'position': 220, 'original_position': 220, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Good catch. It's not intentional and was an oversight carried over from the CLI tool I made before working on this PR", 'created_at': '2026-11-04T08:05:53Z', 'updated_at': '2026-11-04T08:05:53Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465128178', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465128178'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465128178'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465128178/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4452521727, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-04T08:05:41.142967	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'mbc07', 'action': 'submitted', 'pr_id': 14974, 'pr_title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765222752', 'comments': [{'id': 4465125222, 'node_id': 'PRRC_kwDOALCn2M8AAAABCiRnZg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465125222', 'pull_request_review_id': 5765222752, 'diff_hunk': '@@ -0,0 +1,94 @@\n+// Copyright 2026 Dolphin Emulator Project\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+#pragma once\n+\n+#include <functional>\n+#include <map>\n+#include <memory>\n+#include <optional>\n+#include <string>\n+#include <vector>\n+\n+#include <QObject>\n+#include <QString>\n+\n+#include "Common/Flag.h"\n+#include "Common/SCSIDevice.h"\n+#include "Common/WorkQueueThread.h"\n+#include "DiscIO/OmniDrive.h"\n+\n+// Lists the host\'s optical drives at once and fills in what is known about each from a drive cache\n+// that lasts until Dolphin exits. Only a drive new to the cache is queried for its firmware, once,\n+// on a worker thread, so the UI never waits for a drive and known drives are left alone.', 'path': 'Source/Core/DolphinQt/OpticalDriveWatcher.h', 'position': 23, 'original_position': 23, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "You're right, that comment is only valid for the Windows code path, as the Linux code path uses a different route to retrieve the serial number that does wait for a drive", 'created_at': '2026-11-04T08:05:38Z', 'updated_at': '2026-11-04T08:05:39Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465125222', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465125222'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465125222'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465125222/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4452462887, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-04T05:53:11.060597	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 14971, 'pr_title': 'Replace make_unique with C++23 make_unique_for_overwrite when practical.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14971#pullrequestreview-5763862054', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-04T01:06:59.796672	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14979, 'pr_title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#pullrequestreview-5761768480', 'comments': [{'id': 4462381253, 'node_id': 'PRRC_kwDOALCn2M8AAAABCfqIxQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462381253', 'pull_request_review_id': 5761768480, 'diff_hunk': '@@ -0,0 +1,57 @@\n+include(ExternalProject)\n+\n+if(WIN32 AND DOLPHIN_HOST STREQUAL "x64")\n+    # From https://mlocati.github.io/articles/gettext-iconv-windows.html, endoresed by GNU: https://www.gnu.org/software/gettext/\n+    dolphin_fetchcontent_declare(Gettext\n+        URL https://github.com/mlocati/gettext-iconv-windows/releases/download/v1.0-v1.19/gettext1.0-iconv1.19-static-64.zip\n+        URL_HASH SHA256=2b999bc37b56fa052ff98578e9cb188152009f634e3a66aa8ff263a016e9c466\n+    )\n+    FetchContent_MakeAvailable(Gettext)\n+    set(INSTALL_DIR "${gettext_SOURCE_DIR}")\n+else()\n+    if(CMAKE_GENERATOR MATCHES "Makefiles")\n+        set(MAKE_COMMAND "$(MAKE)")\n+    else()\n+        find_program(MAKE_PROGRAM NAMES gmake make REQUIRED)\n+        \n+        cmake_host_system_information(RESULT mem_mib QUERY TOTAL_PHYSICAL_MEMORY)\n+        if(NOT mem_mib OR mem_mib STREQUAL "" OR mem_mib LESS 4096)\n+            set(mem_mib 4096)\n+        endif()\n+        math(EXPR mem_jobs "${mem_mib} / 2048 / 2")\n+        \n+        cmake_host_system_information(RESULT cpu_count QUERY NUMBER_OF_LOGICAL_CORES)\n+        if(NOT cpu_count OR cpu_count STREQUAL "" OR cpu_count LESS 2)\n+            set(cpu_count 2)\n+        endif()\n+        math(EXPR cpu_jobs "${cpu_count} / 2")\n+        \n+        if(cpu_jobs LESS mem_jobs)\n+            set(jobs ${cpu_jobs})\n+        else()\n+            set(jobs ${mem_jobs})\n+        endif()\n+        set(MAKE_COMMAND ${MAKE_PROGRAM} -j${jobs})\n+    endif()\n+\n+    ExternalProject_Add(Gettext\n+        URL https://ftp.gnu.org/pub/gnu/gettext/gettext-1.0.tar.gz\n+        DOWNLOAD_EXTRACT_TIMESTAMP TRUE\n+        USES_TERMINAL_CONFIGURE TRUE', 'path': 'Externals/gettext/CMakeLists.txt', 'position': 40, 'original_position': 40, 'commit_id': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Oh yeah.. :/', 'created_at': '2026-11-04T01:06:57Z', 'updated_at': '2026-11-04T01:06:57Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462381253', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462381253'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462381253'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979'}}, 'original_commit_id': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462381253/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4462331291, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-04T01:06:23.325594	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14979, 'pr_title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#pullrequestreview-5761762656', 'comments': [{'id': 4462377412, 'node_id': 'PRRC_kwDOALCn2M8AAAABCfp5xA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462377412', 'pull_request_review_id': 5761762656, 'diff_hunk': '@@ -0,0 +1,57 @@\n+include(ExternalProject)\n+\n+if(WIN32 AND DOLPHIN_HOST STREQUAL "x64")\n+    # From https://mlocati.github.io/articles/gettext-iconv-windows.html, endoresed by GNU: https://www.gnu.org/software/gettext/\n+    dolphin_fetchcontent_declare(Gettext\n+        URL https://github.com/mlocati/gettext-iconv-windows/releases/download/v1.0-v1.19/gettext1.0-iconv1.19-static-64.zip\n+        URL_HASH SHA256=2b999bc37b56fa052ff98578e9cb188152009f634e3a66aa8ff263a016e9c466\n+    )\n+    FetchContent_MakeAvailable(Gettext)\n+    set(INSTALL_DIR "${gettext_SOURCE_DIR}")\n+else()\n+    if(CMAKE_GENERATOR MATCHES "Makefiles")\n+        set(MAKE_COMMAND "$(MAKE)")\n+    else()\n+        find_program(MAKE_PROGRAM NAMES gmake make REQUIRED)\n+        \n+        cmake_host_system_information(RESULT mem_mib QUERY TOTAL_PHYSICAL_MEMORY)\n+        if(NOT mem_mib OR mem_mib STREQUAL "" OR mem_mib LESS 4096)\n+            set(mem_mib 4096)\n+        endif()\n+        math(EXPR mem_jobs "${mem_mib} / 2048 / 2")\n+        \n+        cmake_host_system_information(RESULT cpu_count QUERY NUMBER_OF_LOGICAL_CORES)\n+        if(NOT cpu_count OR cpu_count STREQUAL "" OR cpu_count LESS 2)\n+            set(cpu_count 2)\n+        endif()\n+        math(EXPR cpu_jobs "${cpu_count} / 2")\n+        \n+        if(cpu_jobs LESS mem_jobs)\n+            set(jobs ${cpu_jobs})\n+        else()\n+            set(jobs ${mem_jobs})\n+        endif()\n+        set(MAKE_COMMAND ${MAKE_PROGRAM} -j${jobs})\n+    endif()\n+\n+    ExternalProject_Add(Gettext\n+        URL https://ftp.gnu.org/pub/gnu/gettext/gettext-1.0.tar.gz\n+        DOWNLOAD_EXTRACT_TIMESTAMP TRUE\n+        USES_TERMINAL_CONFIGURE TRUE', 'path': 'Externals/gettext/CMakeLists.txt', 'position': 40, 'original_position': 40, 'commit_id': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': '3.25 > 3.4 in versioning :p ', 'created_at': '2026-11-04T01:06:20Z', 'updated_at': '2026-11-04T01:06:21Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462377412', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462377412'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462377412'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979'}}, 'original_commit_id': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462377412/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4462331291, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-04T00:59:40.255428	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14979, 'pr_title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#pullrequestreview-5761704448', 'comments': [{'id': 4462331291, 'node_id': 'PRRC_kwDOALCn2M8AAAABCfnFmw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462331291', 'pull_request_review_id': 5761704448, 'diff_hunk': '@@ -0,0 +1,57 @@\n+include(ExternalProject)\n+\n+if(WIN32 AND DOLPHIN_HOST STREQUAL "x64")\n+    # From https://mlocati.github.io/articles/gettext-iconv-windows.html, endoresed by GNU: https://www.gnu.org/software/gettext/\n+    dolphin_fetchcontent_declare(Gettext\n+        URL https://github.com/mlocati/gettext-iconv-windows/releases/download/v1.0-v1.19/gettext1.0-iconv1.19-static-64.zip\n+        URL_HASH SHA256=2b999bc37b56fa052ff98578e9cb188152009f634e3a66aa8ff263a016e9c466\n+    )\n+    FetchContent_MakeAvailable(Gettext)\n+    set(INSTALL_DIR "${gettext_SOURCE_DIR}")\n+else()\n+    if(CMAKE_GENERATOR MATCHES "Makefiles")\n+        set(MAKE_COMMAND "$(MAKE)")\n+    else()\n+        find_program(MAKE_PROGRAM NAMES gmake make REQUIRED)\n+        \n+        cmake_host_system_information(RESULT mem_mib QUERY TOTAL_PHYSICAL_MEMORY)\n+        if(NOT mem_mib OR mem_mib STREQUAL "" OR mem_mib LESS 4096)\n+            set(mem_mib 4096)\n+        endif()\n+        math(EXPR mem_jobs "${mem_mib} / 2048 / 2")\n+        \n+        cmake_host_system_information(RESULT cpu_count QUERY NUMBER_OF_LOGICAL_CORES)\n+        if(NOT cpu_count OR cpu_count STREQUAL "" OR cpu_count LESS 2)\n+            set(cpu_count 2)\n+        endif()\n+        math(EXPR cpu_jobs "${cpu_count} / 2")\n+        \n+        if(cpu_jobs LESS mem_jobs)\n+            set(jobs ${cpu_jobs})\n+        else()\n+            set(jobs ${mem_jobs})\n+        endif()\n+        set(MAKE_COMMAND ${MAKE_PROGRAM} -j${jobs})\n+    endif()\n+\n+    ExternalProject_Add(Gettext\n+        URL https://ftp.gnu.org/pub/gnu/gettext/gettext-1.0.tar.gz\n+        DOWNLOAD_EXTRACT_TIMESTAMP TRUE\n+        USES_TERMINAL_CONFIGURE TRUE', 'path': 'Externals/gettext/CMakeLists.txt', 'position': 40, 'original_position': 40, 'commit_id': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'I think this needs to bump our required cmake version?\n`cmake_minimum_required(VERSION 3.4...4.4.4)`', 'created_at': '2026-11-04T00:59:36Z', 'updated_at': '2026-11-04T00:59:36Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462331291', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462331291'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14979#discussion_r4462331291'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14979'}}, 'original_commit_id': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4462331291/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-04T00:57:10.291192	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14979, 'pr_title': 'Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14979#pullrequestreview-5761685579', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-03T23:27:28.935788	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14980, 'pr_title': 'VideoCommon: allow our custom asset cache to have a single id that references multiple types', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#pullrequestreview-5760941769', 'comments': [{'id': 4461688496, 'node_id': 'PRRC_kwDOALCn2M8AAAABCe_2sA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461688496', 'pull_request_review_id': 5760941769, 'diff_hunk': "@@ -182,7 +175,11 @@ class CustomAssetCache\n   AssetPriorityQueue m_pending_assets;\n \n   std::map<std::size_t, AssetData> m_asset_handle_to_data;\n-  std::map<CustomAssetLibrary::AssetID, std::size_t> m_asset_id_to_handle;\n+\n+  // We key on type to ensure the type always matches what is requested\n+  // in 'CreateAsset'\n+  std::map<CustomAssetLibrary::AssetID, std::map<std::type_index, std::size_t>>", 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 42, 'original_position': 42, 'commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', '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': 'Or, jk everything I said, and use a multimap, `std::multimap<CustomAssetLibrary::AssetID, std::size_t> m_asset_id_to_handle;`\r\nAnd store the `typeid(T)` in the asset, just iterating the duplicate keys to find the matching typeid, which will 99% of the time just be one element, unless the user does these shenanigans that you are compensating for.', 'created_at': '2026-11-03T23:27:26Z', 'updated_at': '2026-11-03T23:27:26Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461688496', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461688496'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461688496'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980'}}, 'original_commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461688496/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4461054030, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T23:19:52.970264	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14980, 'pr_title': 'VideoCommon: allow our custom asset cache to have a single id that references multiple types', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#pullrequestreview-5760878761', 'comments': [{'id': 4461632712, 'node_id': 'PRRC_kwDOALCn2M8AAAABCe8cyA', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461632712', 'pull_request_review_id': 5760878761, 'diff_hunk': "@@ -182,7 +175,11 @@ class CustomAssetCache\n   AssetPriorityQueue m_pending_assets;\n \n   std::map<std::size_t, AssetData> m_asset_handle_to_data;\n-  std::map<CustomAssetLibrary::AssetID, std::size_t> m_asset_id_to_handle;\n+\n+  // We key on type to ensure the type always matches what is requested\n+  // in 'CreateAsset'\n+  std::map<CustomAssetLibrary::AssetID, std::map<std::type_index, std::size_t>>", 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 42, 'original_position': 42, 'commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', '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': 'Or alternatively you could require `MaterialAsset` and friends provide a static asset ID value to use.', 'created_at': '2026-11-03T23:19:50Z', 'updated_at': '2026-11-03T23:19:50Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461632712', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461632712'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461632712'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980'}}, 'original_commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461632712/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4461054030, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T23:15:11.341484	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14980, 'pr_title': 'VideoCommon: allow our custom asset cache to have a single id that references multiple types', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#pullrequestreview-5760838996', 'comments': [{'id': 4461597667, 'node_id': 'PRRC_kwDOALCn2M8AAAABCe6T4w', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461597667', 'pull_request_review_id': 5760838996, 'diff_hunk': "@@ -182,7 +175,11 @@ class CustomAssetCache\n   AssetPriorityQueue m_pending_assets;\n \n   std::map<std::size_t, AssetData> m_asset_handle_to_data;\n-  std::map<CustomAssetLibrary::AssetID, std::size_t> m_asset_id_to_handle;\n+\n+  // We key on type to ensure the type always matches what is requested\n+  // in 'CreateAsset'\n+  std::map<CustomAssetLibrary::AssetID, std::map<std::type_index, std::size_t>>", 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 42, 'original_position': 42, 'commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Mmmm, I guess what I was suggesting would require `lower_bound`/`upper_bound` be used in `ProcessDirtyAssets`, but I don't think that will work with `std::type_index`. I think it would require the pair's `second` type be some integer type with a maximum value.\r\n\r\nIt could work if you implemented your own type index thing like:\r\n```cpp\r\nstatic std::atomic_size_t next_type_index{};\r\ntemplate <typename T> std::size_t GetTypeIndex() {\r\n\r\n  static const std::size_t s_type_id = next_type_index++;\r\n  return s_type_id;\r\n}\r\n```\r\nThen use that instead of `std::type_index(typeid(T))` and do the lower/upper_bound thing in `ProcessDirtyAssets`.\r\nMaybe it would be more performant than a map of a map? but up to you if you wanna do that.", 'created_at': '2026-11-03T23:15:09Z', 'updated_at': '2026-11-03T23:15:09Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461597667', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461597667'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461597667'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980'}}, 'original_commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461597667/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4461054030, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T22:47:03.276279	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'iwubcode', 'action': 'submitted', 'pr_id': 14980, 'pr_title': 'VideoCommon: allow our custom asset cache to have a single id that references multiple types', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#pullrequestreview-5760572107', 'comments': [{'id': 4461368633, 'node_id': 'PRRC_kwDOALCn2M8AAAABCesVOQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461368633', 'pull_request_review_id': 5760572107, 'diff_hunk': "@@ -182,7 +175,11 @@ class CustomAssetCache\n   AssetPriorityQueue m_pending_assets;\n \n   std::map<std::size_t, AssetData> m_asset_handle_to_data;\n-  std::map<CustomAssetLibrary::AssetID, std::size_t> m_asset_id_to_handle;\n+\n+  // We key on type to ensure the type always matches what is requested\n+  // in 'CreateAsset'\n+  std::map<CustomAssetLibrary::AssetID, std::map<std::type_index, std::size_t>>", 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 42, 'original_position': 42, 'commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'user': {'login': 'iwubcode', 'id': 15224722, 'node_id': 'MDQ6VXNlcjE1MjI0NzIy', 'avatar_url': 'https://avatars.githubusercontent.com/u/15224722?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/iwubcode', 'html_url': 'https://github.com/iwubcode', 'followers_url': 'https://api.github.com/users/iwubcode/followers', 'following_url': 'https://api.github.com/users/iwubcode/following{/other_user}', 'gists_url': 'https://api.github.com/users/iwubcode/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/iwubcode/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/iwubcode/subscriptions', 'organizations_url': 'https://api.github.com/users/iwubcode/orgs', 'repos_url': 'https://api.github.com/users/iwubcode/repos', 'events_url': 'https://api.github.com/users/iwubcode/events{/privacy}', 'received_events_url': 'https://api.github.com/users/iwubcode/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'The main advantage of the sub-map is for `ProcessDirtyAssets()`, so we can iterate over each pair.', 'created_at': '2026-11-03T22:47:00Z', 'updated_at': '2026-11-03T22:47:01Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461368633', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461368633'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461368633'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980'}}, 'original_commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461368633/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4461054030, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T22:11:18.922588	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14980, 'pr_title': 'VideoCommon: allow our custom asset cache to have a single id that references multiple types', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14980#pullrequestreview-5760204923', 'comments': [{'id': 4461054030, 'node_id': 'PRRC_kwDOALCn2M8AAAABCeZITg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461054030', 'pull_request_review_id': 5760204923, 'diff_hunk': "@@ -182,7 +175,11 @@ class CustomAssetCache\n   AssetPriorityQueue m_pending_assets;\n \n   std::map<std::size_t, AssetData> m_asset_handle_to_data;\n-  std::map<CustomAssetLibrary::AssetID, std::size_t> m_asset_id_to_handle;\n+\n+  // We key on type to ensure the type always matches what is requested\n+  // in 'CreateAsset'\n+  std::map<CustomAssetLibrary::AssetID, std::map<std::type_index, std::size_t>>", 'path': 'Source/Core/VideoCommon/Assets/CustomAssetCache.h', 'position': 42, 'original_position': 42, 'commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', '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': 'Would it make more sense to just have one map, with a `pair<CustomAssetLibrary::AssetID>, std::type_index>` key type, instead of a map of a map?', 'created_at': '2026-11-03T22:11:15Z', 'updated_at': '2026-11-03T22:11:15Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461054030', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461054030'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14980#discussion_r4461054030'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14980'}}, 'original_commit_id': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4461054030/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T22:02:22.760199	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14794, 'pr_title': 'Android: Use TitleDatabase for game list', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14794#pullrequestreview-5760108286', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-03T21:41:48.899131	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14404, 'pr_title': 'AMMediaboard: Update closesocket error code approriately', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14404#pullrequestreview-5759873204', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-03T19:46:08.848802	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14978, 'pr_title': 'CPU: Fix quickly-stopped games hanging Dolphin', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14978#pullrequestreview-5758512844', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-03T18:59:31.879184	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14977, 'pr_title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener with new LogIOFile class.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#pullrequestreview-5757896825', 'comments': [{'id': 4459160371, 'node_id': 'PRRC_kwDOALCn2M8AAAABCcljMw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4459160371', 'pull_request_review_id': 5757896825, 'diff_hunk': '@@ -363,4 +363,37 @@ bool Delete(DirectIOFile& file, const std::string& filename)\n #endif\n }\n \n+bool LogIOFile::Open(const std::string& path)\n+{\n+#if defined(_WIN32)\n+  return m_file.Open(path, File::AccessMode::Write, File::OpenMode::Always);\n+#else\n+  DirectIOFile new_file;\n+  if (!new_file.Open(path, File::AccessMode::Write, File::OpenMode::Always))\n+    return false;\n+\n+  const int existing_flags = fcntl(new_file.GetHandle(), F_GETFL);\n+  if (existing_flags == -1)\n+    return false;\n+\n+  // Set `O_APPEND` flag.\n+  if (fcntl(new_file.GetHandle(), F_SETFL, existing_flags | O_APPEND) == -1)\n+    return false;\n+\n+  m_file = std::move(new_file);\n+  return true;\n+#endif\n+}\n+\n+bool LogIOFile::Write(std::string_view message)\n+{\n+#if defined(_WIN32)\n+  // Writing to max offset is functionally equivalent to previously calling the CreateFile\n+  // function using FILE_APPEND_DATA access.\n+  return m_file.OffsetWrite(u64(-1), reinterpret_cast<const u8*>(message.data()), message.size());\n+#else\n+  return write(m_file.GetHandle(), message.data(), message.size()) == ssize_t(message.size());', 'path': 'Source/Core/Common/DirectIOFile.cpp', 'position': 33, 'original_position': 33, 'commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I don't think partial `write` can really be handled, if it's even possible with `O_APPEND` ?\r\nTrying to write more bytes wouldn't be atomic. If partial write happens I think the only thing to do is to `return false;` ?", 'created_at': '2026-11-03T18:59:29Z', 'updated_at': '2026-11-03T18:59:29Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4459160371', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4459160371'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4459160371'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977'}}, 'original_commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4459160371/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4458571166, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T18:44:25.174096	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14977, 'pr_title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener with new LogIOFile class.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#pullrequestreview-5757697550', 'comments': [{'id': 4458999905, 'node_id': 'PRRC_kwDOALCn2M8AAAABCcbwYQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458999905', 'pull_request_review_id': 5757697550, 'diff_hunk': '@@ -412,3 +412,69 @@ TEST_F(FileUtilTest, DirectIOFile)\n   file.Close();\n   EXPECT_TRUE(file.Open(destination_path_2, File::AccessMode::Write, File::OpenMode::Always));\n }\n+\n+TEST_F(FileUtilTest, LogIOFile)\n+{\n+  using namespace std::string_view_literals;\n+  using File::LogIOFile;\n+\n+  const auto log_filename = m_file_path + ".log";\n+\n+  // Open works.\n+  LogIOFile log_file;\n+  EXPECT_TRUE(log_file.Open(log_filename));\n+  EXPECT_TRUE(log_file.IsOpen());\n+\n+  // Copy works.\n+  LogIOFile file_copy{log_file};\n+  EXPECT_TRUE(file_copy.IsOpen());\n+\n+  // Close works.\n+  file_copy.Close();\n+  EXPECT_FALSE(file_copy.IsOpen());\n+\n+  constexpr auto log_message = "LogIOFile writes are atomic!\\n"sv;\n+\n+  constexpr std::size_t thread_count = 5;\n+  constexpr std::size_t log_count = 13;\n+\n+  // Concurrent writes work.\n+  std::vector<std::jthread> threads;\n+  for (std::size_t i = 0; i != thread_count; ++i)\n+    threads.emplace_back([&] {\n+      for (std::size_t x = 0; x != log_count; ++x)\n+      {\n+        // Concurrent write works.\n+        EXPECT_TRUE(log_file.Write(log_message));\n+\n+        // Concurrent writes work even if you open the file elsewhere.\n+        LogIOFile log_file_dup{log_filename};\n+        EXPECT_TRUE(log_file.Write(log_message));', 'path': 'Source/UnitTests/Common/FileUtilTest.cpp', 'position': 41, 'original_position': 41, 'commit_id': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'I can do that.', 'created_at': '2026-11-03T18:44:21Z', 'updated_at': '2026-11-03T18:44:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458999905', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458999905'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458999905'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977'}}, 'original_commit_id': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458999905/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4458722965, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T18:44:14.650950	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14977, 'pr_title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener with new LogIOFile class.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#pullrequestreview-5757695693', 'comments': [{'id': 4458998331, 'node_id': 'PRRC_kwDOALCn2M8AAAABCcbqOw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458998331', 'pull_request_review_id': 5757695693, 'diff_hunk': '@@ -363,4 +363,37 @@ bool Delete(DirectIOFile& file, const std::string& filename)\n #endif\n }\n \n+bool LogIOFile::Open(const std::string& path)\n+{\n+#if defined(_WIN32)\n+  return m_file.Open(path, File::AccessMode::Write, File::OpenMode::Always);\n+#else\n+  DirectIOFile new_file;\n+  if (!new_file.Open(path, File::AccessMode::Write, File::OpenMode::Always))\n+    return false;\n+\n+  const int existing_flags = fcntl(new_file.GetHandle(), F_GETFL);\n+  if (existing_flags == -1)\n+    return false;\n+\n+  // Set `O_APPEND` flag.\n+  if (fcntl(new_file.GetHandle(), F_SETFL, existing_flags | O_APPEND) == -1)\n+    return false;\n+\n+  m_file = std::move(new_file);\n+  return true;\n+#endif\n+}\n+\n+bool LogIOFile::Write(std::string_view message)\n+{\n+#if defined(_WIN32)\n+  // Writing to max offset is functionally equivalent to previously calling the CreateFile\n+  // function using FILE_APPEND_DATA access.\n+  return m_file.OffsetWrite(u64(-1), reinterpret_cast<const u8*>(message.data()), message.size());', 'path': 'Source/Core/Common/DirectIOFile.cpp', 'position': 31, 'original_position': 31, 'commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', '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': 'Good catch.', 'created_at': '2026-11-03T18:44:12Z', 'updated_at': '2026-11-03T18:44:12Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458998331', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458998331'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458998331'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977'}}, 'original_commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458998331/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4458611697, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T18:43:59.613558	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'jordan-woyak', 'action': 'submitted', 'pr_id': 14977, 'pr_title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener with new LogIOFile class.', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#pullrequestreview-5757692489', 'comments': [{'id': 4458995738, 'node_id': 'PRRC_kwDOALCn2M8AAAABCcbgGg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458995738', 'pull_request_review_id': 5757692489, 'diff_hunk': '@@ -363,4 +363,37 @@ bool Delete(DirectIOFile& file, const std::string& filename)\n #endif\n }\n \n+bool LogIOFile::Open(const std::string& path)\n+{\n+#if defined(_WIN32)\n+  return m_file.Open(path, File::AccessMode::Write, File::OpenMode::Always);\n+#else\n+  DirectIOFile new_file;\n+  if (!new_file.Open(path, File::AccessMode::Write, File::OpenMode::Always))\n+    return false;\n+\n+  const int existing_flags = fcntl(new_file.GetHandle(), F_GETFL);\n+  if (existing_flags == -1)\n+    return false;\n+\n+  // Set `O_APPEND` flag.\n+  if (fcntl(new_file.GetHandle(), F_SETFL, existing_flags | O_APPEND) == -1)\n+    return false;\n+\n+  m_file = std::move(new_file);\n+  return true;\n+#endif\n+}\n+\n+bool LogIOFile::Write(std::string_view message)\n+{\n+#if defined(_WIN32)\n+  // Writing to max offset is functionally equivalent to previously calling the CreateFile\n+  // function using FILE_APPEND_DATA access.\n+  return m_file.OffsetWrite(u64(-1), reinterpret_cast<const u8*>(message.data()), message.size());\n+#else\n+  return write(m_file.GetHandle(), message.data(), message.size()) == ssize_t(message.size());', 'path': 'Source/Core/Common/DirectIOFile.cpp', 'position': 33, 'original_position': 33, 'commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', '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': 'Good call.', 'created_at': '2026-11-03T18:43:56Z', 'updated_at': '2026-11-03T18:43:57Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458995738', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458995738'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458995738'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977'}}, 'original_commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458995738/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'in_reply_to_id': 4458571166, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T18:21:02.500124	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'submitted', 'pr_id': 14977, 'pr_title': 'Common/Logging: Eliminate fstream and mutex in FileLogListener with new LogIOFile class.', 'state': 'changes_requested', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14977#pullrequestreview-5757167590', 'comments': [{'id': 4458571166, 'node_id': 'PRRC_kwDOALCn2M8AAAABCcBlng', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458571166', 'pull_request_review_id': 5757167590, 'diff_hunk': '@@ -363,4 +363,37 @@ bool Delete(DirectIOFile& file, const std::string& filename)\n #endif\n }\n \n+bool LogIOFile::Open(const std::string& path)\n+{\n+#if defined(_WIN32)\n+  return m_file.Open(path, File::AccessMode::Write, File::OpenMode::Always);\n+#else\n+  DirectIOFile new_file;\n+  if (!new_file.Open(path, File::AccessMode::Write, File::OpenMode::Always))\n+    return false;\n+\n+  const int existing_flags = fcntl(new_file.GetHandle(), F_GETFL);\n+  if (existing_flags == -1)\n+    return false;\n+\n+  // Set `O_APPEND` flag.\n+  if (fcntl(new_file.GetHandle(), F_SETFL, existing_flags | O_APPEND) == -1)\n+    return false;\n+\n+  m_file = std::move(new_file);\n+  return true;\n+#endif\n+}\n+\n+bool LogIOFile::Write(std::string_view message)\n+{\n+#if defined(_WIN32)\n+  // Writing to max offset is functionally equivalent to previously calling the CreateFile\n+  // function using FILE_APPEND_DATA access.\n+  return m_file.OffsetWrite(u64(-1), reinterpret_cast<const u8*>(message.data()), message.size());\n+#else\n+  return write(m_file.GetHandle(), message.data(), message.size()) == ssize_t(message.size());', 'path': 'Source/Core/Common/DirectIOFile.cpp', 'position': 33, 'original_position': 33, 'commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'user': {'login': 'sepalani', 'id': 7890055, 'node_id': 'MDQ6VXNlcjc4OTAwNTU=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7890055?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/sepalani', 'html_url': 'https://github.com/sepalani', 'followers_url': 'https://api.github.com/users/sepalani/followers', 'following_url': 'https://api.github.com/users/sepalani/following{/other_user}', 'gists_url': 'https://api.github.com/users/sepalani/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/sepalani/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/sepalani/subscriptions', 'organizations_url': 'https://api.github.com/users/sepalani/orgs', 'repos_url': 'https://api.github.com/users/sepalani/repos', 'events_url': 'https://api.github.com/users/sepalani/events{/privacy}', 'received_events_url': 'https://api.github.com/users/sepalani/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "This doesn't handle partial write nor `EINTR` properly.", 'created_at': '2026-11-03T18:02:16Z', 'updated_at': '2026-11-03T18:21:00Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458571166', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458571166'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458571166'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977'}}, 'original_commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458571166/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}, {'id': 4458611697, 'node_id': 'PRRC_kwDOALCn2M8AAAABCcED8Q', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458611697', 'pull_request_review_id': 5757167590, 'diff_hunk': '@@ -363,4 +363,37 @@ bool Delete(DirectIOFile& file, const std::string& filename)\n #endif\n }\n \n+bool LogIOFile::Open(const std::string& path)\n+{\n+#if defined(_WIN32)\n+  return m_file.Open(path, File::AccessMode::Write, File::OpenMode::Always);\n+#else\n+  DirectIOFile new_file;\n+  if (!new_file.Open(path, File::AccessMode::Write, File::OpenMode::Always))\n+    return false;\n+\n+  const int existing_flags = fcntl(new_file.GetHandle(), F_GETFL);\n+  if (existing_flags == -1)\n+    return false;\n+\n+  // Set `O_APPEND` flag.\n+  if (fcntl(new_file.GetHandle(), F_SETFL, existing_flags | O_APPEND) == -1)\n+    return false;\n+\n+  m_file = std::move(new_file);\n+  return true;\n+#endif\n+}\n+\n+bool LogIOFile::Write(std::string_view message)\n+{\n+#if defined(_WIN32)\n+  // Writing to max offset is functionally equivalent to previously calling the CreateFile\n+  // function using FILE_APPEND_DATA access.\n+  return m_file.OffsetWrite(u64(-1), reinterpret_cast<const u8*>(message.data()), message.size());', 'path': 'Source/Core/Common/DirectIOFile.cpp', 'position': 31, 'original_position': 31, 'commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'user': {'login': 'sepalani', 'id': 7890055, 'node_id': 'MDQ6VXNlcjc4OTAwNTU=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7890055?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/sepalani', 'html_url': 'https://github.com/sepalani', 'followers_url': 'https://api.github.com/users/sepalani/followers', 'following_url': 'https://api.github.com/users/sepalani/following{/other_user}', 'gists_url': 'https://api.github.com/users/sepalani/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/sepalani/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/sepalani/subscriptions', 'organizations_url': 'https://api.github.com/users/sepalani/orgs', 'repos_url': 'https://api.github.com/users/sepalani/repos', 'events_url': 'https://api.github.com/users/sepalani/events{/privacy}', 'received_events_url': 'https://api.github.com/users/sepalani/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': '`OffsetWrite` calls `OverlappedTransfer<WriteFile>` which can call `ERROR_LOG_FMT` that might produce an unwanted/infinite recursion.', 'created_at': '2026-11-03T18:06:13Z', 'updated_at': '2026-11-03T18:21:00Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458611697', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458611697'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458611697'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977'}}, 'original_commit_id': '57a9b7d583fd6e14d7f9e59a646d99501c312297', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458611697/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}, {'id': 4458648259, 'node_id': 'PRRC_kwDOALCn2M8AAAABCcGSww', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458648259', 'pull_request_review_id': 5757167590, 'diff_hunk': '@@ -35,29 +34,18 @@ const Config::Info<LogLevel> LOGGER_VERBOSITY{{Config::System::Logger, "Options"\n class FileLogListener : public LogListener\n {\n public:\n-  FileLogListener(const std::string& filename)\n-  {\n-    File::OpenFStream(m_logfile, filename, std::ios::app);\n-    SetEnable(true);\n-  }\n+  FileLogListener(const std::string& filename) : m_log_file{filename} {}\n \n   void Log(LogLevel, const char* msg) override\n   {\n-    if (!IsEnabled() || !IsValid())\n+    if (!m_log_file.IsOpen())', 'path': 'Source/Core/Common/Logging/LogManager.cpp', 'position': 31, 'original_position': 31, 'commit_id': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'user': {'login': 'sepalani', 'id': 7890055, 'node_id': 'MDQ6VXNlcjc4OTAwNTU=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7890055?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/sepalani', 'html_url': 'https://github.com/sepalani', 'followers_url': 'https://api.github.com/users/sepalani/followers', 'following_url': 'https://api.github.com/users/sepalani/following{/other_user}', 'gists_url': 'https://api.github.com/users/sepalani/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/sepalani/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/sepalani/subscriptions', 'organizations_url': 'https://api.github.com/users/sepalani/orgs', 'repos_url': 'https://api.github.com/users/sepalani/repos', 'events_url': 'https://api.github.com/users/sepalani/events{/privacy}', 'received_events_url': 'https://api.github.com/users/sepalani/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Checking that the new LogIOFile has a valid state might help preventing that unwanted recursion, assuming we're tracking its state properly.", 'created_at': '2026-11-03T18:09:46Z', 'updated_at': '2026-11-03T18:21:00Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458648259', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458648259'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458648259'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977'}}, 'original_commit_id': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458648259/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}, {'id': 4458722965, 'node_id': 'PRRC_kwDOALCn2M8AAAABCcK2lQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458722965', 'pull_request_review_id': 5757167590, 'diff_hunk': '@@ -412,3 +412,69 @@ TEST_F(FileUtilTest, DirectIOFile)\n   file.Close();\n   EXPECT_TRUE(file.Open(destination_path_2, File::AccessMode::Write, File::OpenMode::Always));\n }\n+\n+TEST_F(FileUtilTest, LogIOFile)\n+{\n+  using namespace std::string_view_literals;\n+  using File::LogIOFile;\n+\n+  const auto log_filename = m_file_path + ".log";\n+\n+  // Open works.\n+  LogIOFile log_file;\n+  EXPECT_TRUE(log_file.Open(log_filename));\n+  EXPECT_TRUE(log_file.IsOpen());\n+\n+  // Copy works.\n+  LogIOFile file_copy{log_file};\n+  EXPECT_TRUE(file_copy.IsOpen());\n+\n+  // Close works.\n+  file_copy.Close();\n+  EXPECT_FALSE(file_copy.IsOpen());\n+\n+  constexpr auto log_message = "LogIOFile writes are atomic!\\n"sv;\n+\n+  constexpr std::size_t thread_count = 5;\n+  constexpr std::size_t log_count = 13;\n+\n+  // Concurrent writes work.\n+  std::vector<std::jthread> threads;\n+  for (std::size_t i = 0; i != thread_count; ++i)\n+    threads.emplace_back([&] {\n+      for (std::size_t x = 0; x != log_count; ++x)\n+      {\n+        // Concurrent write works.\n+        EXPECT_TRUE(log_file.Write(log_message));\n+\n+        // Concurrent writes work even if you open the file elsewhere.\n+        LogIOFile log_file_dup{log_filename};\n+        EXPECT_TRUE(log_file.Write(log_message));', 'path': 'Source/UnitTests/Common/FileUtilTest.cpp', 'position': 41, 'original_position': 41, 'commit_id': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'user': {'login': 'sepalani', 'id': 7890055, 'node_id': 'MDQ6VXNlcjc4OTAwNTU=', 'avatar_url': 'https://avatars.githubusercontent.com/u/7890055?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/sepalani', 'html_url': 'https://github.com/sepalani', 'followers_url': 'https://api.github.com/users/sepalani/followers', 'following_url': 'https://api.github.com/users/sepalani/following{/other_user}', 'gists_url': 'https://api.github.com/users/sepalani/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/sepalani/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/sepalani/subscriptions', 'organizations_url': 'https://api.github.com/users/sepalani/orgs', 'repos_url': 'https://api.github.com/users/sepalani/repos', 'events_url': 'https://api.github.com/users/sepalani/events{/privacy}', 'received_events_url': 'https://api.github.com/users/sepalani/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Shouldn't writes be tested using `log_file_dup` as well?", 'created_at': '2026-11-03T18:17:07Z', 'updated_at': '2026-11-03T18:21:00Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458722965', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458722965'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14977#discussion_r4458722965'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14977'}}, 'original_commit_id': 'd2c0bddaf1035e483965c73724f549814ba7b374', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4458722965/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}
2026-11-03T17:27:07.220521	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'submitted', 'pr_id': 14978, 'pr_title': 'CPU: Fix quickly-stopped games hanging Dolphin', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14978#pullrequestreview-5756715873', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-03T16:57:25.312935	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'sepalani', 'action': 'submitted', 'pr_id': 14967, 'pr_title': 'Common: Add helper function to set SO_REUSEADDR on TCP sockets on non-Windows.', 'state': 'approved', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14967#pullrequestreview-5756288334', 'comments': [], 'type': 'gh_pull_request_review'}
2026-11-03T12:21:21.894686	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'author': 'JoshuaVandaele', 'action': 'submitted', 'pr_id': 14974, 'pr_title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'state': 'commented', 'url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5749202729', 'comments': [{'id': 4452462887, 'node_id': 'PRRC_kwDOALCn2M8AAAABCWMxJw', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4452462887', 'pull_request_review_id': 5749202729, 'diff_hunk': '@@ -0,0 +1,94 @@\n+// Copyright 2026 Dolphin Emulator Project\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+#pragma once\n+\n+#include <functional>\n+#include <map>\n+#include <memory>\n+#include <optional>\n+#include <string>\n+#include <vector>\n+\n+#include <QObject>\n+#include <QString>\n+\n+#include "Common/Flag.h"\n+#include "Common/SCSIDevice.h"\n+#include "Common/WorkQueueThread.h"\n+#include "DiscIO/OmniDrive.h"\n+\n+// Lists the host\'s optical drives at once and fills in what is known about each from a drive cache\n+// that lasts until Dolphin exits. Only a drive new to the cache is queried for its firmware, once,\n+// on a worker thread, so the UI never waits for a drive and known drives are left alone.', 'path': 'Source/Core/DolphinQt/OpticalDriveWatcher.h', 'position': 23, 'original_position': 23, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': '`GetCachedIdentity` and `Refresh` both call `GetDriveInfo` on the UI thread, which on Linux runs `GetSerialNumber`, which waits for a drive', 'created_at': '2026-11-03T08:40:06Z', 'updated_at': '2026-11-03T12:21:18Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4452462887', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4452462887'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4452462887'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4452462887/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}, {'id': 4452521727, 'node_id': 'PRRC_kwDOALCn2M8AAAABCWQW_w', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4452521727', 'pull_request_review_id': 5749202729, 'diff_hunk': '@@ -0,0 +1,776 @@\n+// Copyright 2026 Dolphin Emulator Project\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+#include "Common/SCSIDevice.h"\n+\n+#include <algorithm>\n+#include <array>\n+#include <cctype>\n+#include <cerrno>\n+#include <cstddef>\n+#include <filesystem>\n+#include <map>\n+#include <mutex>\n+#include <optional>\n+#include <span>\n+#include <string>\n+#include <string_view>\n+#include <system_error>\n+#include <vector>\n+\n+#include <fmt/format.h>\n+\n+#if defined(_WIN32)\n+#include <windows.h>\n+#include <winioctl.h>\n+\n+#include <ntddscsi.h>\n+#include <ntddstor.h>\n+#elif defined(__linux__) && !defined(__ANDROID__)\n+#include <fcntl.h>\n+#include <scsi/sg.h>\n+#include <sys/ioctl.h>\n+#include <unistd.h>\n+#endif\n+\n+#include "Common/CommonFuncs.h"\n+#include "Common/CommonTypes.h"\n+#include "Common/FileUtil.h"\n+#include "Common/Logging/Log.h"\n+#include "Common/StringUtil.h"\n+#include "Common/Swap.h"\n+\n+namespace Common\n+{\n+SCSIDevice::~SCSIDevice()\n+{\n+  Close();\n+}\n+\n+#if defined(_WIN32)\n+\n+namespace\n+{\n+// Timeout for the TEST UNIT READY that reads drive status. Short, so a spinning-up drive is\n+// reported as such at once instead of blocking until it is ready\n+constexpr u32 STATUS_PROBE_TIMEOUT_SECONDS = 1;\n+}  // namespace\n+\n+namespace\n+{\n+// SCSI_PASS_THROUGH_DIRECT and its sense buffer in one contiguous block, so the kernel can write\n+// sense data at SenseInfoOffset\n+struct SPTDWithSense\n+{\n+  SCSI_PASS_THROUGH_DIRECT sptd;\n+  std::array<u8, 24> sense;\n+};\n+\n+std::wstring ToDevicePath(const std::string& path)\n+{\n+  return UTF8ToWString(R"(\\\\.\\)" + path);\n+}\n+\n+HANDLE OpenDeviceHandle(const std::string& path, DWORD access)\n+{\n+  return CreateFileW(ToDevicePath(path).c_str(), access, FILE_SHARE_READ | FILE_SHARE_WRITE,\n+                     nullptr, OPEN_EXISTING, 0, nullptr);\n+}\n+\n+void DecodeSense(const SPTDWithSense& sptd, SCSISense* sense)\n+{\n+  sense->status = sptd.sptd.ScsiStatus;\n+  sense->sense_key = sptd.sense[2] & 0x0F;\n+  sense->asc = sptd.sense[12];\n+  sense->ascq = sptd.sense[13];\n+}\n+\n+// Returns false only if the OS rejects the IOCTL itself\n+bool SendPassThrough(HANDLE handle, std::span<const u8> cdb, std::span<u8> buffer,\n+                     SCSIDataDirection direction, u32 timeout_seconds, SPTDWithSense* sptd)\n+{\n+  if (cdb.size() > sizeof(SCSI_PASS_THROUGH_DIRECT::Cdb))\n+    return false;\n+\n+  *sptd = {};\n+  sptd->sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT);\n+  sptd->sptd.CdbLength = static_cast<UCHAR>(cdb.size());\n+  sptd->sptd.SenseInfoLength = static_cast<UCHAR>(sptd->sense.size());\n+  sptd->sptd.DataIn = static_cast<UCHAR>(direction);\n+  sptd->sptd.DataTransferLength = static_cast<ULONG>(buffer.size());\n+  sptd->sptd.TimeOutValue = timeout_seconds;\n+  sptd->sptd.DataBuffer = buffer.empty() ? nullptr : buffer.data();\n+  sptd->sptd.SenseInfoOffset = static_cast<ULONG>(offsetof(SPTDWithSense, sense));\n+  std::ranges::copy(cdb, sptd->sptd.Cdb);\n+\n+  DWORD bytes_returned = 0;\n+  return DeviceIoControl(handle, IOCTL_SCSI_PASS_THROUGH_DIRECT, sptd, sizeof(*sptd), sptd,\n+                         sizeof(*sptd), &bytes_returned, nullptr) != FALSE;\n+}\n+\n+std::string ReadDescriptorString(std::span<const u8> data, u32 offset)\n+{\n+  if (offset == 0 || offset >= data.size())\n+    return {};\n+  const std::string_view text(reinterpret_cast<const char*>(data.data()) + offset,\n+                              data.size() - offset);\n+  return std::string(StripWhitespace(text.substr(0, text.find(\'\\0\'))));\n+}\n+}  // namespace\n+\n+bool SCSIDevice::IsSupported()\n+{\n+  return true;\n+}\n+\n+bool SCSIDevice::Open(const std::string& path, bool read_write)\n+{\n+  Close();\n+\n+  DWORD desired_access = GENERIC_READ;\n+  if (read_write)\n+    desired_access |= GENERIC_WRITE;\n+\n+  HANDLE handle = OpenDeviceHandle(path, desired_access);\n+\n+  // Standard user accounts can be refused GENERIC_WRITE, so fall back to read-only before failing\n+  if (handle == INVALID_HANDLE_VALUE && read_write)\n+    handle = OpenDeviceHandle(path, GENERIC_READ);\n+\n+  if (handle == INVALID_HANDLE_VALUE)\n+  {\n+    ERROR_LOG_FMT(COMMON, "Failed to open optical drive {}: {}", path, GetLastErrorString());\n+    return false;\n+  }\n+\n+  m_handle = handle;\n+  m_path = path;\n+  return true;\n+}\n+\n+void SCSIDevice::Close()\n+{\n+  if (m_handle != nullptr)\n+  {\n+    CloseHandle(m_handle);\n+    m_handle = nullptr;\n+  }\n+}\n+\n+bool SCSIDevice::IsOpen() const\n+{\n+  return m_handle != nullptr;\n+}\n+\n+bool SCSIDevice::SendCommand(std::span<const u8> cdb, std::span<u8> buffer,\n+                             SCSIDataDirection direction, u32 timeout_seconds,\n+                             SCSISense* sense) const\n+{\n+  if (!IsOpen() || cdb.empty())\n+    return false;\n+\n+  DEBUG_LOG_FMT(COMMON, "Sending SCSI opcode {:02X} to {} ({} data bytes)", cdb[0], m_path,\n+                buffer.size());\n+\n+  SPTDWithSense sptd{};\n+  if (!SendPassThrough(m_handle, cdb, buffer, direction, timeout_seconds, &sptd))\n+  {\n+    ERROR_LOG_FMT(COMMON, "SCSI passthrough for opcode {:02X} failed: {}", cdb[0],\n+                  GetLastErrorString());\n+    return false;\n+  }\n+\n+  SCSISense decoded;\n+  DecodeSense(sptd, &decoded);\n+  if (sense != nullptr)\n+    *sense = decoded;\n+\n+  // Any status other than 0x00 (GOOD) is a device-side failure\n+  if (decoded.status != 0)\n+  {\n+    ERROR_LOG_FMT(COMMON,\n+                  "SCSI opcode {:02X} failed. Status: {:02X}, Sense Key: {:02X}, ASC: {:02X}, "\n+                  "ASCQ: {:02X}",\n+                  cdb[0], decoded.status, decoded.sense_key, decoded.asc, decoded.ascq);\n+    return false;\n+  }\n+  return true;\n+}\n+\n+OpticalDriveStatus SCSIDevice::GetDriveStatus(const std::string& path)\n+{\n+  HANDLE handle = OpenDeviceHandle(path, GENERIC_READ | GENERIC_WRITE);\n+  if (handle == INVALID_HANDLE_VALUE)\n+    handle = OpenDeviceHandle(path, GENERIC_READ);\n+\n+  if (handle == INVALID_HANDLE_VALUE)\n+  {\n+    const DWORD error = GetLastError();\n+    if (error == ERROR_NOT_READY || error == ERROR_MEDIA_CHANGED)\n+      return OpticalDriveStatus::NoDisc;\n+    return OpticalDriveStatus::NotReadyOther;\n+  }\n+\n+  // TEST UNIT READY (opcode 0x00). A spinning-up drive answers it at once with a CHECK CONDITION\n+  // (sense 02/04/01), so a short timeout returns the real state instead of waiting for the drive\n+  constexpr std::array<u8, 6> cdb{};\n+  DEBUG_LOG_FMT(COMMON, "Sending SCSI opcode {:02X} to {} (0 data bytes)", cdb[0], path);\n+  SPTDWithSense sptd{};\n+  const bool sent =\n+      SendPassThrough(handle, cdb, {}, SCSIDataDirection::In, STATUS_PROBE_TIMEOUT_SECONDS, &sptd);', 'path': 'Source/Core/Common/SCSIDevice.cpp', 'position': 220, 'original_position': 220, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'SCSIDataDirection says "Commands without a data phase use Out with an empty buffer" but this uses `In\u200b`, is this intentional?', 'created_at': '2026-11-03T08:47:12Z', 'updated_at': '2026-11-03T12:21:18Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4452521727', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4452521727'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4452521727'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4452521727/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}, {'id': 4453291256, 'node_id': 'PRRC_kwDOALCn2M8AAAABCW_U-A', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4453291256', 'pull_request_review_id': 5749202729, 'diff_hunk': '@@ -0,0 +1,776 @@\n+// Copyright 2026 Dolphin Emulator Project', 'path': 'Source/Core/Common/SCSIDevice.cpp', 'position': 1, 'original_position': 1, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'What do you think about splitting this file into multiple source files per platform? i.e. "SCSIDeviceLinux" etc.', 'created_at': '2026-11-03T10:10:46Z', 'updated_at': '2026-11-03T12:21:18Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4453291256', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4453291256'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4453291256'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4453291256/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}, {'id': 4454423062, 'node_id': 'PRRC_kwDOALCn2M8AAAABCYEaFg', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4454423062', 'pull_request_review_id': 5749202729, 'diff_hunk': '@@ -122,9 +122,9 @@ void GameConfigWidget::CreateWidgets()\n       tr("Synchronizes the GPU and CPU threads to help prevent random freezes "\n          "in Dual core mode. (ON = Compatible, OFF = Fast)"));\n   m_emulate_disc_speed->SetDescription(\n-      tr("Enable emulated disc speed. Disabling this can cause crashes "\n-         "and other problems in some games. "\n-         "(ON = Compatible, OFF = Unlocked)"));\n+      tr("Enable emulated disc speed. Disabling this can cause crashes and other problems in some "\n+         "games. This setting is ignored when booting from an optical disc. (ON = Compatible, OFF "\n+         "= Unlocked)"));', 'path': 'Source/Core/DolphinQt/Config/GameConfigWidget.cpp', 'position': 9, 'original_position': 9, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'This is just a style preference, but\n```suggestion\n      tr("Enable emulated disc speed. Disabling this can cause crashes and other problems in some "\n         "games. This setting is ignored when booting from an optical disc. "\n         "(ON = Compatible, OFF = Unlocked)"));\n```', 'created_at': '2026-11-03T12:07:09Z', 'updated_at': '2026-11-03T12:21:18Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4454423062', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4454423062'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4454423062'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4454423062/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}, {'id': 4454462737, 'node_id': 'PRRC_kwDOALCn2M8AAAABCYG1EQ', 'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4454462737', 'pull_request_review_id': 5749202729, 'diff_hunk': '@@ -251,6 +252,7 @@ class MainWindow final : public QMainWindow\n   bool m_fullscreen_requested = false;\n   bool m_is_screensaver_inhibited = false;\n   std::unique_ptr<BootParameters> m_pending_boot;\n+  std::optional<std::string> m_optical_drive;', 'path': 'Source/Core/DolphinQt/MainWindow.h', 'position': 12, 'original_position': 12, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'JoshuaVandaele', 'id': 24195176, 'node_id': 'MDQ6VXNlcjI0MTk1MTc2', 'avatar_url': 'https://avatars.githubusercontent.com/u/24195176?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/JoshuaVandaele', 'html_url': 'https://github.com/JoshuaVandaele', 'followers_url': 'https://api.github.com/users/JoshuaVandaele/followers', 'following_url': 'https://api.github.com/users/JoshuaVandaele/following{/other_user}', 'gists_url': 'https://api.github.com/users/JoshuaVandaele/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/JoshuaVandaele/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/JoshuaVandaele/subscriptions', 'organizations_url': 'https://api.github.com/users/JoshuaVandaele/orgs', 'repos_url': 'https://api.github.com/users/JoshuaVandaele/repos', 'events_url': 'https://api.github.com/users/JoshuaVandaele/events{/privacy}', 'received_events_url': 'https://api.github.com/users/JoshuaVandaele/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "I'm not sure why `MainWindow` needs to keep track of this since `DVDInterface` already does? Could it just use `GetInsertedOpticalDrive`?", 'created_at': '2026-11-03T12:11:35Z', 'updated_at': '2026-11-03T12:21:18Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4454462737', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'author_association': 'MEMBER', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4454462737'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4454462737'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4454462737/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'is_copilot_code_review': False, 'copilot_code_review_sources': []}], 'type': 'gh_pull_request_review'}

Recent 'gh_push' events

2026-11-04T06:32:12.705796	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '051ad48713038eba5bd4bbc13a115c2c8492cfb5', 'after_sha': '0000000000000000000000000000000000000000', 'commits': [], 'base_ref_name': None, 'ref_name': 'dependabot/uv/tornado-6.5.9', 'ref_type': 'heads', 'created': False, 'deleted': True, 'forced': False, 'type': 'gh_push'}
2026-11-04T06:31:59.446238	{'source': 'ghhookparser', 'repo': 'dolphin-emu/netplay-index', 'pusher': 'dependabot[bot]', 'before_sha': '0000000000000000000000000000000000000000', 'after_sha': '2348b731e93570120a09671f57d82497700b0661', 'commits': [{'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-04T06:31:56Z', 'username': 'dependabot[bot]'}, 'distinct': True, 'added': [], 'modified': ['uv.lock'], 'removed': [], 'message': "build(deps): bump tornado from 6.5.8 to 6.6\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n- [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst)\n- [Commits](https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n  dependency-version: '6.6'\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>", 'url': 'https://github.com/dolphin-emu/netplay-index/commit/2348b731e93570120a09671f57d82497700b0661', 'hash': '2348b731e93570120a09671f57d82497700b0661'}], 'base_ref_name': None, 'ref_name': 'dependabot/uv/tornado-6.6', 'ref_type': 'heads', 'created': True, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-03T04:44:54.249190	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'e8c42467964da77011f7da93a06f9e0a72ca868f', 'after_sha': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-01T21:09:00-06:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/Debugger/BranchWatch.cpp'], 'removed': [], 'message': 'Core/Debugger: Clean up emplace_back calls with use of "parenthesized initialization of aggregates".', 'url': 'https://github.com/dolphin-emu/dolphin/commit/faae54eec7b0b017f5792fb6c9da2fb5143dcecc', 'hash': 'faae54eec7b0b017f5792fb6c9da2fb5143dcecc'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-01T21:09:38-06:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/TypeUtils.h'], 'removed': [], 'message': 'Common/TypeUtils: Remove missing `__cpp_aggregate_paren_init` feature workaround.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/d08bddeaabbfba79f76407018ab02bdf68fa2d46', 'hash': 'd08bddeaabbfba79f76407018ab02bdf68fa2d46'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-02T22:44:51-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/TypeUtils.h', 'Source/Core/Core/Debugger/BranchWatch.cpp'], 'removed': [], 'message': 'Merge pull request #14972 from jordan-woyak/paren-init-aggregate\n\nMinor cleanups with "parenthesized initialization of aggregates".', 'url': 'https://github.com/dolphin-emu/dolphin/commit/df4bd441dec5d6f3cff606eea76f183963e97a44', 'hash': 'df4bd441dec5d6f3cff606eea76f183963e97a44'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T23:28:05.763684	{'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'pusher': 'OatmealDome', 'before_sha': '7dbfc36649ffe79b77c08995556a0e65e3594cf5', 'after_sha': '3465813deb5cf00bc1966c9ea9b79c9deb3b3cf4', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-02T17:47:31-05:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/buildbot/etc/flatpak_linter_exceptions.json'], 'removed': [], 'message': 'buildbot: Add appstream-flathub-manifest-key-not-allowed to Flatpak linter exceptions', 'url': 'https://github.com/dolphin-emu/sadm/commit/1cb7e842aa351c276c9410756c12fce38cb5ca89', 'hash': '1cb7e842aa351c276c9410756c12fce38cb5ca89'}, {'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-02T18:07:57-05:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['roles/buildbot/etc/master.cfg'], 'removed': [], 'message': 'buildbot: Disable 7z compression filters on macOS\nThe version of libarchive accessible in the NixOS buildbot environment is not able to parse a filter used on macOS 7z.', 'url': 'https://github.com/dolphin-emu/sadm/commit/3465813deb5cf00bc1966c9ea9b79c9deb3b3cf4', 'hash': '3465813deb5cf00bc1966c9ea9b79c9deb3b3cf4'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T20:16:24.358672	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'after_sha': 'e8c42467964da77011f7da93a06f9e0a72ca868f', 'commits': [{'author': {'name': 'Ma-Rang', 'email': '266874926+Ma-Rang@users.noreply.github.com', 'date': '2026-03-15T17:40:11-05:00', 'username': 'Ma-Rang'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Core/HW/EXI/EXI_DeviceGecko.cpp', 'Source/Core/Core/HW/EXI/EXI_DeviceGecko.h'], 'removed': [], 'message': 'EXI: Show on-screen error when USB Gecko fails to bind\n\nPreviously, if the USB Gecko server failed to bind to any port in the\n55020-55030 range, it silently returned with no indication to the user.\nNow displays an on-screen message and logs an error.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/18190eb05d46592e12008050805d9c4bbdbb2138', 'hash': '18190eb05d46592e12008050805d9c4bbdbb2138'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-02T14:16:21-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Core/HW/EXI/EXI_DeviceGecko.cpp', 'Source/Core/Core/HW/EXI/EXI_DeviceGecko.h'], 'removed': [], 'message': 'Merge pull request #14510 from Ma-Rang/pr/gecko-bind-error\n\nEXI: Show on-screen error when USB Gecko fails to bind', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e8c42467964da77011f7da93a06f9e0a72ca868f', 'hash': 'e8c42467964da77011f7da93a06f9e0a72ca868f'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T19:46:26.202898	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'd182533d363eae8c753d37cfad4107930da2019a', 'after_sha': 'a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'commits': [{'author': {'name': 'Joshua Vandaële', 'email': 'joshua@vandaele.software', 'date': '2026-11-02T18:36:38+01:00', 'username': 'JoshuaVandaele'}, 'distinct': False, 'added': [], 'modified': ['Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml.in'], 'removed': [], 'message': 'Flatpak: Do not set the flathub::manifest tag\n\nThis resolves the recent build failures introduced by https://github.com/flathub-infra/flatpak-builder-lint/commit/df1c8f992aa5620fc473efe6c6e96b9f3b11e1ba. Nothing seems to break with it being removed.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/2833c12b20e5c3d929f8c27a7742ecadb8a669b4', 'hash': '2833c12b20e5c3d929f8c27a7742ecadb8a669b4'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-02T13:46:23-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml.in'], 'removed': [], 'message': 'Merge pull request #14975 from JoshuaVandaele/flathub-manifest\n\nFlatpak: Do not set the flathub::manifest tag', 'url': 'https://github.com/dolphin-emu/dolphin/commit/a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'hash': 'a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T03:35:02.890014	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': 'adf85af9fe9785e891fa99141f6d34907a2d9f12', 'after_sha': 'd182533d363eae8c753d37cfad4107930da2019a', 'commits': [{'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-10-04T20:04:35-05:00', 'username': 'iwubcode'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/VideoBackends/D3D/D3DVertexManager.cpp', 'Source/Core/VideoBackends/D3D/D3DVertexManager.h', 'Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp', 'Source/Core/VideoBackends/D3D12/D3D12VertexManager.h', 'Source/Core/VideoBackends/OGL/OGLVertexManager.cpp', 'Source/Core/VideoBackends/OGL/OGLVertexManager.h', 'Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp', 'Source/Core/VideoBackends/Vulkan/VKVertexManager.h', 'Source/Core/VideoCommon/VertexManagerBase.cpp', 'Source/Core/VideoCommon/VertexManagerBase.h'], 'removed': [], 'message': 'VideoBackends / VideoCommon: split draw calls into separate commit and render steps', 'url': 'https://github.com/dolphin-emu/dolphin/commit/4fb368cf36342d6b354d93b8711ef7f2e1881023', 'hash': '4fb368cf36342d6b354d93b8711ef7f2e1881023'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-01T21:35:00-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/VideoBackends/D3D/D3DVertexManager.cpp', 'Source/Core/VideoBackends/D3D/D3DVertexManager.h', 'Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp', 'Source/Core/VideoBackends/D3D12/D3D12VertexManager.h', 'Source/Core/VideoBackends/OGL/OGLVertexManager.cpp', 'Source/Core/VideoBackends/OGL/OGLVertexManager.h', 'Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp', 'Source/Core/VideoBackends/Vulkan/VKVertexManager.h', 'Source/Core/VideoCommon/VertexManagerBase.cpp', 'Source/Core/VideoCommon/VertexManagerBase.h'], 'removed': [], 'message': 'Merge pull request #14916 from iwubcode/vertex_manager_draw_refactor\n\nVideoBackends / VideoCommon: split draw calls into separate commit and render functions', 'url': 'https://github.com/dolphin-emu/dolphin/commit/d182533d363eae8c753d37cfad4107930da2019a', 'hash': 'd182533d363eae8c753d37cfad4107930da2019a'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-02T03:33:58.610819	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'jordan-woyak', 'before_sha': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'after_sha': 'adf85af9fe9785e891fa99141f6d34907a2d9f12', 'commits': [{'author': {'name': 'debug687', 'email': '313431556+debug687@users.noreply.github.com', 'date': '2026-10-19T21:29:55Z', 'username': 'debug687'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/DolphinQt/Config/ToolTipControls/ToolTipWidget.h'], 'removed': [], 'message': "DolphinQt: Fix crash from stale timer event in ToolTipWidget\n\nLLM generated explaination for the LLM generated commit:\n\nA queued QTimerEvent can be dispatched after the timer was already killed (Qt recycles timer ids), e.g. when a slider is dragged and enter/leave events fire in rapid succession. In that case m_timer_id is empty and dereferencing it in timerEvent() asserts on 'this->_M_is_engaged()' in debug builds, while in release builds it passes a garbage timer id to killTimer().\n\nOnly process the event if it matches the timer we are tracking, which also prevents showing a balloon for a stale event.", 'url': 'https://github.com/dolphin-emu/dolphin/commit/cee23f7af6b1624da3e7190e5a18a282d82d567c', 'hash': 'cee23f7af6b1624da3e7190e5a18a282d82d567c'}, {'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2026-11-01T21:33:55-06:00', 'username': 'jordan-woyak'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/DolphinQt/Config/ToolTipControls/ToolTipWidget.h'], 'removed': [], 'message': 'Merge pull request #14941 from debug687/patch-1\n\nDolphinQt: Fix crash from stale timer event in ToolTipWidget', 'url': 'https://github.com/dolphin-emu/dolphin/commit/adf85af9fe9785e891fa99141f6d34907a2d9f12', 'hash': 'adf85af9fe9785e891fa99141f6d34907a2d9f12'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-01T19:59:48.261662	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JMC47', 'before_sha': 'e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'after_sha': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'commits': [{'author': {'name': 'Joshua Vandaële', 'email': 'joshua@vandaele.software', 'date': '2026-06-28T08:33:40+02:00', 'username': 'JoshuaVandaele'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/Common/MathUtil.h', 'Source/Core/Common/Matrix.cpp', 'Source/Core/Common/Matrix.h', 'Source/Core/Core/HW/WiimoteEmu/Camera.h', 'Source/Core/Core/HW/WiimoteEmu/Dynamics.cpp', 'Source/Core/Core/HW/WiimoteEmu/MotionPlus.cpp', 'Source/Core/Core/HW/WiimoteEmu/MotionPlus.h', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp', 'Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUCursor.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp', 'Source/Core/InputCommon/ControllerEmu/StickGate.cpp', 'Source/Core/InputCommon/ControllerInterface/DualShockUDPClient/DualShockUDPClient.cpp', 'Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp', 'Source/Core/InputCommon/ControllerInterface/SteamDeck/SteamDeck.cpp', 'Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp', 'Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp', 'Source/Core/VideoBackends/Software/NativeVertexFormat.h', 'Source/UnitTests/Common/MathUtilTest.cpp'], 'removed': [], 'message': "MathUtil: C++20/23 modernisations\n\nI've also created DegreesToRadians/RadiansToDegrees utility functions since there was a lot of repeated code", 'url': 'https://github.com/dolphin-emu/dolphin/commit/6dcb0817a2cd1a507dbf5e3c42bf13623b5b5cae', 'hash': '6dcb0817a2cd1a507dbf5e3c42bf13623b5b5cae'}, {'author': {'name': 'JMC47', 'email': 'JMC4789@gmail.com', 'date': '2026-11-01T14:59:45-05:00', 'username': 'JMC47'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/Common/MathUtil.h', 'Source/Core/Common/Matrix.cpp', 'Source/Core/Common/Matrix.h', 'Source/Core/Core/HW/WiimoteEmu/Camera.h', 'Source/Core/Core/HW/WiimoteEmu/Dynamics.cpp', 'Source/Core/Core/HW/WiimoteEmu/MotionPlus.cpp', 'Source/Core/Core/HW/WiimoteEmu/MotionPlus.h', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp', 'Source/Core/DolphinQt/Config/Mapping/MappingIndicator.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUCursor.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp', 'Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp', 'Source/Core/InputCommon/ControllerEmu/StickGate.cpp', 'Source/Core/InputCommon/ControllerInterface/DualShockUDPClient/DualShockUDPClient.cpp', 'Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp', 'Source/Core/InputCommon/ControllerInterface/SteamDeck/SteamDeck.cpp', 'Source/Core/InputCommon/ControllerInterface/Wiimote/WiimoteController.cpp', 'Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp', 'Source/Core/VideoBackends/Software/NativeVertexFormat.h', 'Source/UnitTests/Common/MathUtilTest.cpp'], 'removed': [], 'message': 'Merge pull request #14704 from JoshuaVandaele/mathutils-23\n\nMathUtil: C++20/23 modernisations', 'url': 'https://github.com/dolphin-emu/dolphin/commit/833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'hash': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-01T19:59:20.079691	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'JMC47', 'before_sha': '86d554802d7560acf12b5c5a2b3acb344069b5ce', 'after_sha': 'e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'commits': [{'author': {'name': 'Jordan Woyak', 'email': 'jordan.woyak@gmail.com', 'date': '2025-10-11T18:29:51-05:00', 'username': 'jordan-woyak'}, 'distinct': False, 'added': [], 'modified': ['Source/Core/AudioCommon/Mixer.cpp', 'Source/Core/AudioCommon/Mixer.h', 'Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp', 'Source/Core/Core/HW/WiimoteEmu/Speaker.cpp', 'Source/Core/Core/HW/WiimoteEmu/Speaker.h', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.h'], 'removed': [], 'message': 'HW/Wiimote: Speaker logic accuracy fixes, comments, and code cleanups.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/baa05e32f1db379e98bbd48b35b2aaa2e6fa4e94', 'hash': 'baa05e32f1db379e98bbd48b35b2aaa2e6fa4e94'}, {'author': {'name': 'JMC47', 'email': 'JMC4789@gmail.com', 'date': '2026-11-01T14:59:17-05:00', 'username': 'JMC47'}, 'distinct': True, 'added': [], 'modified': ['Source/Core/AudioCommon/Mixer.cpp', 'Source/Core/AudioCommon/Mixer.h', 'Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp', 'Source/Core/Core/HW/WiimoteEmu/Speaker.cpp', 'Source/Core/Core/HW/WiimoteEmu/Speaker.h', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp', 'Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp', 'Source/Core/Core/HW/WiimoteReal/WiimoteReal.h'], 'removed': [], 'message': 'Merge pull request #14006 from jordan-woyak/speaker-accuracy\n\nHW/Wiimote: Speaker logic accuracy fixes, comments, and code cleanups.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'hash': 'e6ed14488a84eeaae1856e1d7c0dd457dceb49ce'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-01T05:11:01.565986	{'source': 'ghhookparser', 'repo': 'dolphin-emu/dolphin', 'pusher': 'iwubcode', 'before_sha': '613db73aeb2c086a816592df2fb193d73130101b', 'after_sha': '86d554802d7560acf12b5c5a2b3acb344069b5ce', 'commits': [{'author': {'name': 'CySlaytor', 'email': 'cyslaytor@gmail.com', 'date': '2026-11-01T01:29:01Z', 'username': 'CySlaytor'}, 'distinct': False, 'added': ['Data/Sys/Sounds/info.wav', 'Data/Sys/Sounds/lb.wav', 'Data/Sys/Sounds/lbcancel.wav', 'Data/Sys/Sounds/lbsubmit.wav', 'Data/Sys/Sounds/unlock.wav'], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt', 'Source/Android/app/src/main/res/values/strings.xml', 'Source/Core/AudioCommon/Mixer.cpp', 'Source/Core/AudioCommon/Mixer.h', 'Source/Core/AudioCommon/WaveFile.cpp', 'Source/Core/AudioCommon/WaveFile.h', 'Source/Core/Common/CommonPaths.h', 'Source/Core/Common/FileUtil.cpp', 'Source/Core/Common/FileUtil.h', 'Source/Core/Core/AchievementManager.cpp', 'Source/Core/Core/AchievementManager.h', 'Source/Core/Core/Config/AchievementSettings.cpp', 'Source/Core/Core/Config/AchievementSettings.h', 'Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp', 'Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.h'], 'removed': [], 'message': 'feat(retroachievements): implement achievement notification sounds', 'url': 'https://github.com/dolphin-emu/dolphin/commit/56076f403dc8fc3a560e4b6c0811fba3d49ad880', 'hash': '56076f403dc8fc3a560e4b6c0811fba3d49ad880'}, {'author': {'name': 'iwubcode', 'email': 'iwubcode@users.noreply.github.com', 'date': '2026-11-01T00:10:58-05:00', 'username': 'iwubcode'}, 'distinct': True, 'added': ['Data/Sys/Sounds/info.wav', 'Data/Sys/Sounds/lb.wav', 'Data/Sys/Sounds/lbcancel.wav', 'Data/Sys/Sounds/lbsubmit.wav', 'Data/Sys/Sounds/unlock.wav'], 'modified': ['Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt', 'Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt', 'Source/Android/app/src/main/res/values/strings.xml', 'Source/Core/AudioCommon/Mixer.cpp', 'Source/Core/AudioCommon/Mixer.h', 'Source/Core/AudioCommon/WaveFile.cpp', 'Source/Core/AudioCommon/WaveFile.h', 'Source/Core/Common/CommonPaths.h', 'Source/Core/Common/FileUtil.cpp', 'Source/Core/Common/FileUtil.h', 'Source/Core/Core/AchievementManager.cpp', 'Source/Core/Core/AchievementManager.h', 'Source/Core/Core/Config/AchievementSettings.cpp', 'Source/Core/Core/Config/AchievementSettings.h', 'Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp', 'Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.h'], 'removed': [], 'message': 'Merge pull request #14596 from CySlaytor/master\n\nfeat(retroachievements): implement achievement notification sounds', 'url': 'https://github.com/dolphin-emu/dolphin/commit/86d554802d7560acf12b5c5a2b3acb344069b5ce', 'hash': '86d554802d7560acf12b5c5a2b3acb344069b5ce'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}
2026-11-01T04:58:33.096478	{'source': 'ghhookparser', 'repo': 'dolphin-emu/sadm', 'pusher': 'OatmealDome', 'before_sha': '855912ebde8af3da1c27fd82351104a095734af0', 'after_sha': '7dbfc36649ffe79b77c08995556a0e65e3594cf5', 'commits': [{'author': {'name': 'OatmealDome', 'email': 'julian@oatmealdome.me', 'date': '2026-11-01T00:19:40-04:00', 'username': 'OatmealDome'}, 'distinct': True, 'added': [], 'modified': ['flake.lock'], 'removed': [], 'message': "flake.lock: Update\n\nFlake lock file updates:\n\n• Updated input 'colmena':\n    'github:nix-community/colmena/e269669b798a361a521029d5d15e289124a15038?narHash=sha256-jp%2BgxgnCdMhpBxxBnOoHW5fRVc%2BC5rKCFHsP/afoh3w%3D' (2026-10-09)\n  → 'github:nix-community/colmena/fc7d67ed1cd52af91415f92ba92b543bc7245f25?narHash=sha256-Dv4jEQeqvPpicC3H8mLTyqtTgXp23p4HPiCMKqKWXFA%3D' (2026-10-30)\n• Updated input 'colmena/nixpkgs':\n    'github:nixos/nixpkgs/494ce7fd23ff6a5dff39e1fb11e9b6f2ac74bf25?narHash=sha256-Ni0LBydzaCi8oek12r4mVreuFHqYlM1eTD6SfiENKfw%3D' (2026-10-05)\n  → 'github:nixos/nixpkgs/3ec636362e1816bc2f0888fa0fa2c69f1bc9e504?narHash=sha256-rZLrzrC6i%2BjnTAlvPZHogKDulY7WWDEv9hJeHieO7Zw%3D' (2026-10-23)\n• Updated input 'colmena/stable':\n    'github:nixos/nixpkgs/1f623a1582190fa3ba3f5cea25aba925055d43eb?narHash=sha256-q8KNN9Zs/nau7Cc8%2Bf5ZGJeMXmCQqm5%2Bbgy5m/uYxmw%3D' (2026-10-05)\n  → 'github:nixos/nixpkgs/89844ad35df40e876cb6d0a3a319fbf65ea4b984?narHash=sha256-TMADWku9ye40AQKGMdSoCpByfqaL7kbO%2Bo8E46Q7CLQ%3D' (2026-10-26)\n• Updated input 'nixpkgs':\n    'github:NixOS/nixpkgs/da6dc0e7b26060f2f71ce3ef7088fb56ee44fa36?narHash=sha256-MlvRfa1O5Cqc2/a%2BgG%2Bl9TSuowEoCKCmrJ1d9oAVm0I%3D' (2026-10-21)\n  → 'github:NixOS/nixpkgs/fa1373130d5a21c040a47c5dbe1913d59ed91808?narHash=sha256-HzgjxrLY4AEc0044ZuM5CHbLSWLZgDlay1idmzvvpJs%3D' (2026-10-31)\n• Updated input 'pyproject-build-systems':\n    'github:pyproject-nix/build-system-pkgs/a17819c85163988e063806ffc4f6d2716bc8ead8?narHash=sha256-mGOkvueuMGSRiD75ccxFzfEvSlIU9ztjFluHMKOtogY%3D' (2026-10-20)\n  → 'github:pyproject-nix/build-system-pkgs/6171a3484937e14cdf2316ed9a60f1c27b6cb71e?narHash=sha256-wLiau0yOPONjWSoQNC%2B%2BuirtJqx2D4hGAWSKU0TfKGc%3D' (2026-10-29)\n• Updated input 'pyproject-build-systems/uv2nix':\n    'github:pyproject-nix/uv2nix/7aba73a3d85454f1118f8cf9de97979b4d26bcac?narHash=sha256-PMtgvHuGijoIAtPtrBm7kJOI6fxzX4LYPAIK%2BQVGY%2BY%3D' (2026-10-16)\n  → 'github:pyproject-nix/uv2nix/c361746c7d630d98b972378290547c8d35542a7a?narHash=sha256-3CE1CEwprYlHRlRVkXDkhqec0jjF9Cti7tdk8vVDsCM%3D' (2026-10-29)\n• Updated input 'pyproject-nix':\n    'github:pyproject-nix/pyproject.nix/ddc400a6883b042646d0940e65971bb7f7e96107?narHash=sha256-vcCAvhtA7hG%2B/gOge29hYHy7I/dLkIsr5nLx4sFEQic%3D' (2026-10-10)\n  → 'github:pyproject-nix/pyproject.nix/bf7d4b1d6de61db02fd4e748395634f03006e5de?narHash=sha256-NPWgb6H4arnWyTKvYIys5U0xqd5QY74Z%2BlyTJA%2B7XGY%3D' (2026-10-29)\n• Updated input 'rust-overlay':\n    'github:oxalica/rust-overlay/5f267b7f323a4d6df0b9c0e3eaa043cbe85386f2?narHash=sha256-E8zFJilWlORqzIUJizyhZ/0WKBOizuM6s1nRSgPRomo%3D' (2026-10-22)\n  → 'github:oxalica/rust-overlay/6ecf534a7c16e7c969f26838fdd8c93597ae93f3?narHash=sha256-%2BsgVNI2c67di%2BXIeMaz5KSei4T65kX68s5Nl0E5Gzbc%3D' (2026-10-31)\n• Updated input 'uv2nix':\n    'github:pyproject-nix/uv2nix/0fdaa03ea3c3c16dbb1fe4d69108f07227a4b42d?narHash=sha256-UWo7wDPi00YXOI1Io7g4vGKuCSPJ863kHJVDzsgqtoM%3D' (2026-10-22)\n  → 'github:pyproject-nix/uv2nix/c361746c7d630d98b972378290547c8d35542a7a?narHash=sha256-3CE1CEwprYlHRlRVkXDkhqec0jjF9Cti7tdk8vVDsCM%3D' (2026-10-29)", 'url': 'https://github.com/dolphin-emu/sadm/commit/7dbfc36649ffe79b77c08995556a0e65e3594cf5', 'hash': '7dbfc36649ffe79b77c08995556a0e65e3594cf5'}], 'base_ref_name': None, 'ref_name': 'master', 'ref_type': 'heads', 'created': False, 'deleted': False, 'forced': False, 'type': 'gh_push'}

Recent 'internal_log' events

2026-11-04T11:46:22.205130	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-04T11:46:21.862098	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-04T11:46:17.113804	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:46:15.437205	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-04T11:44:21.627588	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/buildbot.py', 'lineno': 131, 'msg': 'PR %s mergeable: %s (%s)', 'args': "(14981, None, 'unknown')", 'type': 'internal_log'}
2026-11-04T11:41:15.436824	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:41:13.625242	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-04T11:36:21.861663	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-04T11:36:21.486911	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-04T11:36:13.624889	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:36:12.140120	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-04T11:31:12.139800	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:31:10.332145	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-04T11:26:21.486709	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-04T11:26:21.152118	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-04T11:26:10.331809	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:26:08.486763	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-04T11:21:08.486433	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:21:06.648295	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-04T11:16:21.151907	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/core-developers', 'phire,degasus,Dentomologist,Pokechu22,CrossVR,jordan-woyak,AdmiralCurtiss,JosJuice,linkmauve,iwubcode,Tilka,OatmealDome,leoetlino')", 'type': 'internal_log'}
2026-11-04T11:16:20.788847	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'core-developers')", 'type': 'internal_log'}
2026-11-04T11:16:06.647964	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:16:04.694525	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}
2026-11-04T11:11:04.694152	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 29, 'msg': 'New GH %s: %s', 'args': "('dolphin-emu/trusted-developers', 'FioraAeterna,meffij,moncefmechri,Buddybenj,Helios747,hackbar,Zopolis4,bentley,lioncash,mandar1jn,magumagu,booto,magcius,riking,linkmauve,Ziek,Parlane,zackhow,tom-pratt,CasualPokePlayer,ligfx,cristian64,TryTwo,skidau,vladfi1,jloehr,EmptyChaos,deReeperJosh,JordanTheToaster,kamiyo,LPFaint99,OatmealDome,rukai,randomstuff,TellowKrinkle,mimimi085181,RisingFog,PatrickFerry,Filoppi,hrydgard,Pokechu22,ColinDTaylor,Tilka,Stevoisiak,nullgemm,hdcmeta,mathieui,rlnilsen,SuperSamus,CrossVR,SirMangler,mitaclaw,shonumi,DacoTaco,Ebola16,CelestialAmber,CookiePLMonster,orbea,mahdihijazi,Tinob,Linktothepast,mbc07,aldelaro5,jordan-woyak,merryhime,aroulin,LAGonauta,unknownbrackets,skylersaleh,phire,delroth,LillyJadeKatrin,yourWaifu,VampireFlower,Sir-Walrus,Techjar,BhaaLseN,CrystalGamma,NanoByte011,Geotale,tygyh,Lobsterzelda,OrN,jezze,Dentomologist,Phatcat,Sintendo,Hydr8gon,comex,jjdelvalle,Simonx22,krnlyng,Linkinworm,Orphis,endrift,neobrain,zopieux,AdmiralCurtiss,noahpistilli,K0bin,RachelBryk,spxtr,glennricster,JosJuice,smurf3tte,sepalani,Starsam80,marcan,adamdmoss,hthh,mrgreywater,cscd98,Sam-Belliveau,iwubcode,archshift,MayImilae,galop1n,nickbeth,dreamsyntax,ShimmerGlass,corwin-mcknight,JoshuaVandaele,Gamer64ytb,leoetlino,JMC47,crediar,degasus,gwicks,malleoz,mmastrac,kayru,spycrab')", 'type': 'internal_log'}
2026-11-04T11:11:02.806082	{'source': 'logging', 'level': 'INFO', 'pathname': '/nix/store/98y8b324p65rdc44nkgfs38ml3cplndp-central-env/lib/python3.13/site-packages/central/github/authz.py', 'lineno': 20, 'msg': 'Refreshing list of trusted users (from %s/%s)', 'args': "('dolphin-emu', 'trusted-developers')", 'type': 'internal_log'}

Recent 'issue' events

2026-11-03T20:32:48.650741	{'source': 'redmine', 'new': False, 'update': 2, 'issue': 14175, 'title': 'Retroachievements', 'author': 'JosJuice', 'type': 'issue'}
2026-11-03T16:24:33.637252	{'source': 'redmine', 'new': True, 'update': 0, 'issue': 14175, 'title': 'Retroachievements', 'author': 'Cloudgaming7882', 'type': 'issue'}
2026-11-03T13:37:27.061515	{'source': 'redmine', 'new': False, 'update': 3, 'issue': 14172, 'title': "Can't select any interface language other than English on macOS since v2609", 'author': 'OatmealDome', 'type': 'issue'}
2026-11-01T09:16:43.791855	{'source': 'redmine', 'new': False, 'update': 2, 'issue': 14174, 'title': 'Paper mario the thousand year door  ', 'author': 'JosJuice', 'type': 'issue'}

Recent 'new_dev_version' events

2026-11-03T04:44:55.957645	{'source': 'repomanager', 'hash': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'branch': 'master', 'shortrev': '2609-173', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14972 from jordan-woyak/paren-init-aggregate\n\nMinor cleanups with "parenthesized initialization of aggregates".', 'url': 'https://github.com/dolphin-emu/dolphin/commit/df4bd441dec5d6f3cff606eea76f183963e97a44', 'type': 'new_dev_version'}
2026-11-02T20:16:26.534624	{'source': 'repomanager', 'hash': 'e8c42467964da77011f7da93a06f9e0a72ca868f', 'branch': 'master', 'shortrev': '2609-170', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14510 from Ma-Rang/pr/gecko-bind-error\n\nEXI: Show on-screen error when USB Gecko fails to bind', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e8c42467964da77011f7da93a06f9e0a72ca868f', 'type': 'new_dev_version'}
2026-11-02T19:46:28.060984	{'source': 'repomanager', 'hash': 'a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'branch': 'master', 'shortrev': '2609-168', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14975 from JoshuaVandaele/flathub-manifest\n\nFlatpak: Do not set the flathub::manifest tag', 'url': 'https://github.com/dolphin-emu/dolphin/commit/a0ed231ff614ec6e03716d72fa8f3a11ce57c6a0', 'type': 'new_dev_version'}
2026-11-02T03:35:04.879103	{'source': 'repomanager', 'hash': 'd182533d363eae8c753d37cfad4107930da2019a', 'branch': 'master', 'shortrev': '2609-166', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14916 from iwubcode/vertex_manager_draw_refactor\n\nVideoBackends / VideoCommon: split draw calls into separate commit and render functions', 'url': 'https://github.com/dolphin-emu/dolphin/commit/d182533d363eae8c753d37cfad4107930da2019a', 'type': 'new_dev_version'}
2026-11-02T03:34:00.690923	{'source': 'repomanager', 'hash': 'adf85af9fe9785e891fa99141f6d34907a2d9f12', 'branch': 'master', 'shortrev': '2609-164', 'author': 'Jordan Woyak', 'message': 'Merge pull request #14941 from debug687/patch-1\n\nDolphinQt: Fix crash from stale timer event in ToolTipWidget', 'url': 'https://github.com/dolphin-emu/dolphin/commit/adf85af9fe9785e891fa99141f6d34907a2d9f12', 'type': 'new_dev_version'}
2026-11-01T19:59:49.726721	{'source': 'repomanager', 'hash': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'branch': 'master', 'shortrev': '2609-162', 'author': 'JMC47', 'message': 'Merge pull request #14704 from JoshuaVandaele/mathutils-23\n\nMathUtil: C++20/23 modernisations', 'url': 'https://github.com/dolphin-emu/dolphin/commit/833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'type': 'new_dev_version'}
2026-11-01T19:59:21.576066	{'source': 'repomanager', 'hash': 'e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'branch': 'master', 'shortrev': '2609-160', 'author': 'JMC47', 'message': 'Merge pull request #14006 from jordan-woyak/speaker-accuracy\n\nHW/Wiimote: Speaker logic accuracy fixes, comments, and code cleanups.', 'url': 'https://github.com/dolphin-emu/dolphin/commit/e6ed14488a84eeaae1856e1d7c0dd457dceb49ce', 'type': 'new_dev_version'}
2026-11-01T05:11:03.397581	{'source': 'repomanager', 'hash': '86d554802d7560acf12b5c5a2b3acb344069b5ce', 'branch': 'master', 'shortrev': '2609-158', 'author': 'iwubcode', 'message': 'Merge pull request #14596 from CySlaytor/master\n\nfeat(retroachievements): implement achievement notification sounds', 'url': 'https://github.com/dolphin-emu/dolphin/commit/86d554802d7560acf12b5c5a2b3acb344069b5ce', 'type': 'new_dev_version'}

Recent 'notification' events

2026-11-04T11:44:21.268157	{'source': 'notifications', 'msg': "[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303S\ufeffuperSamus\x03 opened pull request #14981: State: Don't load savestates during initialization (\x0306master\x03...\x0306dont-load-savestate-during-init\x03): \x1f\x0302https://dolp.in/pr14981\x03\x1f", 'type': 'notification'}
2026-11-04T08:34:25.901009	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303e\ufeffllierocks\x03 commented on #14962 (Add Wayland support (Linux only)): \x1f\x0302https://dolp.in/pr14962#issuecomment-6626385853\x03\x1f', 'type': 'notification'}
2026-11-04T08:06:24.515258	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303m\ufeffbc07\x03 commented on #14974 ab0b80: \x1f\x0302https://dolp.in/pr14974#discussion_r4465132899\x03\x1f', 'type': 'notification'}
2026-11-04T08:06:09.624707	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303m\ufeffbc07\x03 commented on #14974 ab0b80: \x1f\x0302https://dolp.in/pr14974#discussion_r4465130546\x03\x1f', 'type': 'notification'}
2026-11-04T08:05:55.976256	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303m\ufeffbc07\x03 commented on #14974 ab0b80: \x1f\x0302https://dolp.in/pr14974#discussion_r4465128178\x03\x1f', 'type': 'notification'}
2026-11-04T08:05:41.143238	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303m\ufeffbc07\x03 commented on pull request #14974 (Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware): \x1f\x0302https://dolp.in/pr14974#pullrequestreview-5765222752\x03\x1f', 'type': 'notification'}
2026-11-04T06:32:12.706085	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x1f\x03] \x0303d\ufeffependabot[bot]\x03 \x0304deleted \x0306dependabot/uv/tornado-6.5.9\x03 at \x0314051ad4\x03', 'type': 'notification'}
2026-11-04T06:32:10.960702	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 closed pull request #13: build(deps): bump tornado from 6.5.8 to 6.5.9 (\x0306master\x03...\x0306dependabot/uv/tornado-6.5.9\x03): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/13\x03\x1f', 'type': 'notification'}
2026-11-04T06:32:08.749096	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 commented on #13 (build(deps): bump tornado from 6.5.8 to 6.5.9): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/13#issuecomment-6624314141\x03\x1f', 'type': 'notification'}
2026-11-04T06:32:05.313680	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 labeled pull request #18: build(deps): bump tornado from 6.5.8 to 6.6 (\x0306master\x03...\x0306dependabot/uv/tornado-6.6\x03): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/18\x03\x1f', 'type': 'notification'}
2026-11-04T06:32:04.870561	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 labeled pull request #18: build(deps): bump tornado from 6.5.8 to 6.6 (\x0306master\x03...\x0306dependabot/uv/tornado-6.6\x03): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/18\x03\x1f', 'type': 'notification'}
2026-11-04T06:32:02.495487	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x03\x1f] \x0303d\ufeffependabot[bot]\x03 opened pull request #18: build(deps): bump tornado from 6.5.8 to 6.6 (\x0306master\x03...\x0306dependabot/uv/tornado-6.6\x03): \x1f\x0302https://github.com/dolphin-emu/netplay-index/pull/18\x03\x1f', 'type': 'notification'}
2026-11-04T06:31:59.446725	{'source': 'notifications', 'msg': '2348b7 by \x0303d\ufeffependabot[bot]\x03 [\x03090\x03|\x03091\x03|\x03040\x03] \x1f\x0302https://github.com/dolphin-emu/netplay-index/commit/2348b731e93570120a09671f57d82497700b0661\x03\x1f build(deps): bump tornado from 6.5.8 to 6.6', 'type': 'notification'}
2026-11-04T06:31:59.446575	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/netplay-index\x1f\x03] \x0303d\ufeffependabot[bot]\x03 created \x0306dependabot/uv/tornado-6.6\x03 +\x021\x02 new commit', 'type': 'notification'}
2026-11-04T05:53:11.060906	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303i\ufeffwubcode\x03 approved pull request #14971 (Replace make_unique with C++23 make_unique_for_overwrite when practical.): \x1f\x0302https://dolp.in/pr14971#pullrequestreview-5763862054\x03\x1f', 'type': 'notification'}
2026-11-04T01:06:59.797902	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #14979 dee503: \x1f\x0302https://dolp.in/pr14979#discussion_r4462381253\x03\x1f', 'type': 'notification'}
2026-11-04T01:06:23.325839	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303J\ufeffoshuaVandaele\x03 commented on pull request #14979 (Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms): \x1f\x0302https://dolp.in/pr14979#pullrequestreview-5761762656\x03\x1f', 'type': 'notification'}
2026-11-04T00:59:40.256614	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 commented on #14979 dee503: \x1f\x0302https://dolp.in/pr14979#discussion_r4462331291\x03\x1f', 'type': 'notification'}
2026-11-04T00:58:23.928235	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14979 \x0304failed\x03 on builders [pr-osx-universal]: \x1f\x0302https://dolphin.ci/#/builders/7/builds/10944\x03\x1f', 'type': 'notification'}
2026-11-04T00:57:10.291453	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303j\ufeffordan-woyak\x03 approved pull request #14979 (Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms): \x1f\x0302https://dolp.in/pr14979#pullrequestreview-5761685579\x03\x1f', 'type': 'notification'}
2026-11-04T00:51:19.188606	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14979 \x0304failed\x03 on builders [pr-win-dbg-x64]: \x1f\x0302https://dolphin.ci/#/builders/31/builds/10933\x03\x1f', 'type': 'notification'}
2026-11-04T00:48:44.908565	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14979 \x0304failed\x03 on builders [pr-deb-dbg-x64]: \x1f\x0302https://dolphin.ci/#/builders/1/builds/10924\x03\x1f', 'type': 'notification'}
2026-11-04T00:47:38.990686	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] build for #14979 \x0304failed\x03 on builders [pr-deb-x64]: \x1f\x0302https://dolphin.ci/#/builders/26/builds/10923\x03\x1f', 'type': 'notification'}
2026-11-04T00:45:48.251891	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303J\ufeffoshuaVandaele\x03 synchronized pull request #14979: Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms (\x0306master\x03...\x0306vendored-gettext\x03): \x1f\x0302https://dolp.in/pr14979\x03\x1f', 'type': 'notification'}
2026-11-04T00:44:02.879462	{'source': 'notifications', 'msg': '[\x1f\x0313dolphin-emu/dolphin\x03\x1f] \x0303J\ufeffoshuaVandaele\x03 commented on #14979 (Externals/gettext: Update to 1.0, vendor-in from source on non-Windows host platforms): \x1f\x0302https://dolp.in/pr14979#issuecomment-6619350519\x03\x1f', 'type': 'notification'}

Recent 'pull_request_fifoci_status' events

2026-11-04T01:41:15.410813	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-04T01:30:22.444531	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-04T01:29:38.373043	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-04T01:22:15.441759	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-04T01:10:17.104585	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-04T00:56:29.967740	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '714e59899fb680865d5579051db74961aa39f1d9', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-03T23:29:01.540619	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f3ad14b5d8c1dba08fc999602cd229c2909c11dc', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-03T23:23:39.198406	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f3ad14b5d8c1dba08fc999602cd229c2909c11dc', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-03T23:21:33.188439	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14980, 'type': 'pull_request_fifoci_status'}
2026-11-03T23:13:36.271555	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f3ad14b5d8c1dba08fc999602cd229c2909c11dc', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-03T23:12:54.319680	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14980, 'type': 'pull_request_fifoci_status'}
2026-11-03T23:01:51.394688	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f3ad14b5d8c1dba08fc999602cd229c2909c11dc', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-03T23:01:23.770397	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14980, 'type': 'pull_request_fifoci_status'}
2026-11-03T22:48:53.119527	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': 'f3ad14b5d8c1dba08fc999602cd229c2909c11dc', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14979, 'type': 'pull_request_fifoci_status'}
2026-11-03T22:34:58.634278	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14980, 'type': 'pull_request_fifoci_status'}
2026-11-03T22:28:16.691667	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '21d2ede101cad14bb67226f6a73d794d3f0e190c', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14980, 'type': 'pull_request_fifoci_status'}
2026-11-03T22:19:40.239013	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6633a6e6ca0aefb3c7e1e8c6664cc6a8dc2e9bb9', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14977, 'type': 'pull_request_fifoci_status'}
2026-11-03T22:05:53.507041	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6633a6e6ca0aefb3c7e1e8c6664cc6a8dc2e9bb9', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14977, 'type': 'pull_request_fifoci_status'}
2026-11-03T21:49:40.161874	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6633a6e6ca0aefb3c7e1e8c6664cc6a8dc2e9bb9', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14977, 'type': 'pull_request_fifoci_status'}
2026-11-03T21:34:58.150245	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6633a6e6ca0aefb3c7e1e8c6664cc6a8dc2e9bb9', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14977, 'type': 'pull_request_fifoci_status'}
2026-11-03T21:24:03.584802	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '6633a6e6ca0aefb3c7e1e8c6664cc6a8dc2e9bb9', 'service': 'pr-fifoci-mtl-osx-m1', 'pr': 14977, 'type': 'pull_request_fifoci_status'}
2026-11-03T20:43:00.303918	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '56fc67ff8e5d807bdd8d83c2f753b8dba67383fe', 'service': 'pr-fifoci-sw-lin-mesa', 'pr': 14977, 'type': 'pull_request_fifoci_status'}
2026-11-03T20:31:42.584334	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '56fc67ff8e5d807bdd8d83c2f753b8dba67383fe', 'service': 'pr-fifoci-vk-lin-mesa', 'pr': 14977, 'type': 'pull_request_fifoci_status'}
2026-11-03T20:15:44.666317	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '56fc67ff8e5d807bdd8d83c2f753b8dba67383fe', 'service': 'pr-fifoci-ogl-lin-mesa', 'pr': 14977, 'type': 'pull_request_fifoci_status'}
2026-11-03T20:00:23.191288	{'source': 'buildbot', 'repo': 'dolphin-emu/dolphin', 'hash': '56fc67ff8e5d807bdd8d83c2f753b8dba67383fe', 'service': 'pr-fifoci-mvk-osx-m1', 'pr': 14977, 'type': 'pull_request_fifoci_status'}

Recent 'raw_bb_hook' events

2026-11-04T11:46:28.460838	{'source': 'webserver', 'raw': {'buildid': 196492, 'number': 173, 'builderid': 50, 'buildrequestid': 197083, 'workerid': 16, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792787, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'workername': ['deneb-appimage', 'Worker'], 'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-appimage-arm64', 'Builder'], 'builderid': [50, 'Builder'], 'repository': ['', 'Build'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'codebase': ['', 'Build'], 'buildnumber': [173, 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-appimage-arm64', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197083, 'buildsetid': 44136, 'builderid': 50, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 50, 'name': 'pr-appimage-arm64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/50/builds/173'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:24.135717	{'source': 'webserver', 'raw': {'buildid': 196499, 'number': 10927, 'builderid': 27, 'buildrequestid': 197078, 'workerid': 10, 'masterid': 1, 'started_at': 1793792679, 'complete_at': 1793792752, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-ubu-x64', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [27, 'Builder'], 'buildnumber': [10927, 'Build'], 'buildername': ['pr-ubu-x64', 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'branch': ['refs/pull/14981/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197078, 'buildsetid': 44136, 'builderid': 27, 'priority': 0, 'claimed': True, 'claimed_at': 1793792679, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10927'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:24.073042	{'source': 'webserver', 'raw': {'buildid': 196491, 'number': 179, 'builderid': 49, 'buildrequestid': 197082, 'workerid': 15, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792783, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [49, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'repository': ['', 'Build'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'buildername': ['pr-appimage-x64', 'Builder'], 'branch': ['refs/pull/14981/head', 'Build'], 'workername': ['altair-appimage', 'Worker'], 'buildnumber': [179, 'Build'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-appimage-x64', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197082, 'buildsetid': 44136, 'builderid': 49, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 49, 'name': 'pr-appimage-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/49/builds/179'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:20.193192	{'source': 'webserver', 'raw': {'buildid': 196501, 'number': 9583, 'builderid': 10, 'buildrequestid': 197084, 'workerid': 5, 'masterid': 1, 'started_at': 1793792752, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14981', 'Trigger'], 'pr_id': [14981, 'Trigger'], 'scheduler': ['pr-fifoci-lin', 'Scheduler'], 'branch': ['refs/pull/14981/head', 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Trigger'], 'shortrev': ['d59b55', 'Trigger'], 'buildnumber': [9583, 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildername': ['pr-fifoci-ogl-lin-mesa', 'Builder'], 'project': ['', 'Build'], 'builderid': [10, 'Builder'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'workername': ['altair-fifoci', 'Worker']}, 'buildrequest': {'buildrequestid': 197084, 'buildsetid': 44137, 'builderid': 10, 'priority': 0, 'claimed': True, 'claimed_at': 1793792752, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792752, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44137, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-lin' triggered this build", 'submitted_at': 1793792752, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 196499, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, 'patch': None}]}, 'parentbuild': {'buildid': 196499, 'number': 10927, 'builderid': 27, 'buildrequestid': 197078, 'workerid': 10, 'masterid': 1, 'started_at': 1793792679, 'complete_at': 1793792752, '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/9583'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:18.614556	{'source': 'webserver', 'raw': {'buildid': 196500, 'number': 10926, 'builderid': 1, 'buildrequestid': 197070, 'workerid': 9, 'masterid': 1, 'started_at': 1793792747, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14981', 'Change'], 'pr_id': [14981, 'Change'], 'buildername': ['pr-deb-dbg-x64', 'Builder'], 'builderid': [1, 'Builder'], 'repository': ['', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'project': ['', 'Build'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'branch': ['refs/pull/14981/head', 'Build'], 'workername': ['debian', 'Worker'], 'buildnumber': [10926, 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197070, 'buildsetid': 44136, 'builderid': 1, 'priority': 0, 'claimed': True, 'claimed_at': 1793792747, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10926'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:18.258401	{'source': 'webserver', 'raw': {'buildid': 196495, 'number': 10925, 'builderid': 26, 'buildrequestid': 197077, 'workerid': 9, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792747, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'branchname': ['pr-14981', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'builderid': [26, 'Builder'], 'pr_id': [14981, 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'buildername': ['pr-deb-x64', 'Builder'], 'buildnumber': [10925, 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'workername': ['debian', 'Worker'], 'builddir': ['/buildbot/pr-deb-x64', 'Worker'], 'basedir': ['/buildbot', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197077, 'buildsetid': 44136, 'builderid': 26, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10925'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:04.346643	{'source': 'webserver', 'raw': {'buildid': 196490, 'number': 10937, 'builderid': 11, 'buildrequestid': 197074, 'workerid': 1, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792711, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'repo': ['dolphin-emu/dolphin', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'buildername': ['pr-freebsd-x64', 'Builder'], 'builderid': [11, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'workername': ['freebsd', 'Worker'], 'buildnumber': [10937, 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'basedir': ['/usr/home/buildbot/freebsd', 'Worker'], 'warnings-count': [0, 'WarningCountingShellCommand'], 'builddir': ['/usr/home/buildbot/freebsd/pr-freebsd-x64', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197074, 'buildsetid': 44136, 'builderid': 11, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1793792675, 'complete_at': 1793792711, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10937'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:02.453307	{'source': 'webserver', 'raw': {'buildid': 196494, 'number': 10933, 'builderid': 22, 'buildrequestid': 197076, 'workerid': 12, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792732, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'builderid': [22, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'shortrev': ['d59b55', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'pr_id': [14981, 'Change'], 'buildername': ['pr-android', 'Builder'], 'workername': ['android', 'Worker'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/pr-android', 'Worker'], 'buildnumber': [10933, 'Build'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197076, 'buildsetid': 44136, 'builderid': 22, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1793792675, 'complete_at': 1793792732, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10933'}, 'type': 'raw_bb_hook'}
2026-11-04T11:46:01.983146	{'source': 'webserver', 'raw': {'buildid': 196489, 'number': 10930, 'builderid': 9, 'buildrequestid': 197073, 'workerid': 10, 'masterid': 1, 'started_at': 1793792675, 'complete_at': 1793792679, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'branchname': ['pr-14981', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['lint', 'Builder'], 'builderid': [9, 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'branch': ['refs/pull/14981/head', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10930, 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build'], 'basedir': ['/buildbot', 'Worker'], 'builddir': ['/buildbot/lint', 'Worker'], 'got_revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197073, 'buildsetid': 44136, 'builderid': 9, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': True, 'results': 0, 'submitted_at': 1793792675, 'complete_at': 1793792679, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10930'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:37.419795	{'source': 'webserver', 'raw': {'buildid': 196499, 'number': 10927, 'builderid': 27, 'buildrequestid': 197078, 'workerid': 10, 'masterid': 1, 'started_at': 1793792679, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [27, 'Builder'], 'buildnumber': [10927, 'Build'], 'buildername': ['pr-ubu-x64', 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'branch': ['refs/pull/14981/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197078, 'buildsetid': 44136, 'builderid': 27, 'priority': 0, 'claimed': True, 'claimed_at': 1793792679, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10927'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:36.328861	{'source': 'webserver', 'raw': {'buildid': 196490, 'number': 10937, 'builderid': 11, 'buildrequestid': 197074, 'workerid': 1, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'repo': ['dolphin-emu/dolphin', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'buildername': ['pr-freebsd-x64', 'Builder'], 'builderid': [11, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'workername': ['freebsd', 'Worker'], 'buildnumber': [10937, 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197074, 'buildsetid': 44136, 'builderid': 11, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10937'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:35.551860	{'source': 'webserver', 'raw': {'buildid': 196495, 'number': 10925, 'builderid': 26, 'buildrequestid': 197077, 'workerid': 9, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branchname': ['pr-14981', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'builderid': [26, 'Builder'], 'pr_id': [14981, 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'buildername': ['pr-deb-x64', 'Builder'], 'buildnumber': [10925, 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'workername': ['debian', 'Worker'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'repository': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197077, 'buildsetid': 44136, 'builderid': 26, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10925'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:35.305061	{'source': 'webserver', 'raw': {'buildid': 196498, 'number': 10946, 'builderid': 7, 'buildrequestid': 197072, 'workerid': 8, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'buildnumber': [10946, 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'shortrev': ['d59b55', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-osx-universal', 'Builder'], 'branchname': ['pr-14981', 'Change'], 'builderid': [7, 'Builder'], 'pr_id': [14981, 'Change'], 'workername': ['osx-m1', 'Worker']}, 'buildrequest': {'buildrequestid': 197072, 'buildsetid': 44136, 'builderid': 7, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10946'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:35.294705	{'source': 'webserver', 'raw': {'buildid': 196496, 'number': 10926, 'builderid': 13, 'buildrequestid': 197075, 'workerid': 4, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'branchname': ['pr-14981', 'Change'], 'workername': ['windows', 'Worker'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-win-arm64', 'Builder'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [13, 'Builder'], 'buildnumber': [10926, 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'project': ['', 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build']}, 'buildrequest': {'buildrequestid': 197075, 'buildsetid': 44136, 'builderid': 13, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10926'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:35.171221	{'source': 'webserver', 'raw': {'buildid': 196494, 'number': 10933, 'builderid': 22, 'buildrequestid': 197076, 'workerid': 12, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'builderid': [22, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'shortrev': ['d59b55', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'pr_id': [14981, 'Change'], 'buildername': ['pr-android', 'Builder'], 'workername': ['android', 'Worker'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'buildnumber': [10933, 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197076, 'buildsetid': 44136, 'builderid': 22, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10933'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:34.783005	{'source': 'webserver', 'raw': {'buildid': 196489, 'number': 10930, 'builderid': 9, 'buildrequestid': 197073, 'workerid': 10, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'branchname': ['pr-14981', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['lint', 'Builder'], 'builderid': [9, 'Builder'], 'workername': ['ubuntu-lts', 'Worker'], 'branch': ['refs/pull/14981/head', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'codebase': ['', 'Build'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildnumber': [10930, 'Build'], 'repository': ['', 'Build'], 'project': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197073, 'buildsetid': 44136, 'builderid': 9, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/10930'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:15.619238	{'source': 'webserver', 'raw': {'buildid': 196493, 'number': 6015, 'builderid': 44, 'buildrequestid': 197081, 'workerid': 14, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'branch': ['refs/pull/14981/head', 'Build'], 'shortrev': ['d59b55', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'pr_id': [14981, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'branchname': ['pr-14981', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'buildername': ['pr-flatpak-arm64', 'Builder'], 'builderid': [44, 'Builder'], 'workername': ['deneb-flatpak', 'Worker'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'buildnumber': [6015, 'Build'], 'codebase': ['', 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197081, 'buildsetid': 44136, 'builderid': 44, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/6015'}, 'type': 'raw_bb_hook'}
2026-11-04T11:45:15.517208	{'source': 'webserver', 'raw': {'buildid': 196497, 'number': 6075, 'builderid': 43, 'buildrequestid': 197080, 'workerid': 13, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'buildername': ['pr-flatpak-x64', 'Builder'], 'branchname': ['pr-14981', 'Change'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'scheduler': ['pr', 'Scheduler'], 'pr_id': [14981, 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'builderid': [43, 'Builder'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'buildnumber': [6075, 'Build'], 'workername': ['altair-flatpak', 'Worker'], 'branch': ['refs/pull/14981/head', 'Build'], 'repository': ['', 'Build'], 'codebase': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197080, 'buildsetid': 44136, 'builderid': 43, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, '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/6075'}, 'type': 'raw_bb_hook'}
2026-11-04T11:44:37.288967	{'source': 'webserver', 'raw': {'buildid': 196491, 'number': 179, 'builderid': 49, 'buildrequestid': 197082, 'workerid': 15, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'shortrev': ['d59b55', 'Change'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'builderid': [49, 'Builder'], 'branchname': ['pr-14981', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build'], 'repository': ['', 'Build'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'codebase': ['', 'Build'], 'project': ['', 'Build'], 'buildername': ['pr-appimage-x64', 'Builder'], 'branch': ['refs/pull/14981/head', 'Build'], 'workername': ['altair-appimage', 'Worker'], 'buildnumber': [179, 'Build']}, 'buildrequest': {'buildrequestid': 197082, 'buildsetid': 44136, 'builderid': 49, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 49, 'name': 'pr-appimage-x64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/49/builds/179'}, 'type': 'raw_bb_hook'}
2026-11-04T11:44:37.234450	{'source': 'webserver', 'raw': {'buildid': 196492, 'number': 173, 'builderid': 50, 'buildrequestid': 197083, 'workerid': 16, 'masterid': 1, 'started_at': 1793792675, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'workername': ['deneb-appimage', 'Worker'], 'branchname': ['pr-14981', 'Change'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'headrev': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Change'], 'shortrev': ['d59b55', 'Change'], 'repo': ['dolphin-emu/dolphin', 'Change'], 'buildername': ['pr-appimage-arm64', 'Builder'], 'builderid': [50, 'Builder'], 'repository': ['', 'Build'], 'pr_id': [14981, 'Change'], 'scheduler': ['pr', 'Scheduler'], 'codebase': ['', 'Build'], 'buildnumber': [173, 'Build'], 'branch': ['refs/pull/14981/head', 'Build'], 'project': ['', 'Build'], 'owners': [['Central (on behalf of: SuperSamus)'], 'Build'], 'revision': ['d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'Build']}, 'buildrequest': {'buildrequestid': 197083, 'buildsetid': 44136, 'builderid': 50, 'priority': 0, 'claimed': True, 'claimed_at': 1793792675, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793792675, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44136, 'external_idstring': None, 'reason': "The AnyBranchScheduler scheduler named 'pr' triggered this build", 'submitted_at': 1793792675, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': None, 'parent_relationship': None, 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13243, 'branch': 'refs/pull/14981/head', 'revision': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793792675, 'patch': None}]}, 'parentbuild': None, 'parentbuilder': None, 'builder': {'builderid': 50, 'name': 'pr-appimage-arm64', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/50/builds/173'}, 'type': 'raw_bb_hook'}
2026-11-04T01:41:14.723972	{'source': 'webserver', 'raw': {'buildid': 196488, 'number': 9267, 'builderid': 19, 'buildrequestid': 197068, 'workerid': 8, 'masterid': 1, 'started_at': 1793755823, 'complete_at': 1793756474, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'shortrev': ['dee503', 'Trigger'], 'builderid': [19, 'Builder'], 'repository': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'warnings-count': [114, 'WarningCountingShellCommand'], 'pr_id': [14979, 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch'], 'branchname': ['pr-14979', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9267, 'Build'], 'project': ['', 'Build'], 'headrev': ['dee5038a40b44191c8f214b3bca84fe80392ec11', 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'revision': ['dee5038a40b44191c8f214b3bca84fe80392ec11', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'branch': ['refs/pull/14979/head', 'Build'], 'owners': [['Central (on behalf of: JoshuaVandaele)'], 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mvk-osx-m1', 'Worker']}, 'buildrequest': {'buildrequestid': 197068, 'buildsetid': 44135, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793755823, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793755164, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44135, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793755164, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 196479, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13242, 'branch': 'refs/pull/14979/head', 'revision': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793753161, 'patch': None}]}, 'parentbuild': {'buildid': 196479, 'number': 10945, 'builderid': 7, 'buildrequestid': 197051, 'workerid': 8, 'masterid': 1, 'started_at': 1793753873, 'complete_at': 1793755164, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 19, 'name': 'pr-fifoci-mvk-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/19/builds/9267'}, 'type': 'raw_bb_hook'}
2026-11-04T01:30:23.514281	{'source': 'webserver', 'raw': {'buildid': 196488, 'number': 9267, 'builderid': 19, 'buildrequestid': 197068, 'workerid': 8, 'masterid': 1, 'started_at': 1793755823, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'shortrev': ['dee503', 'Trigger'], 'builderid': [19, 'Builder'], 'repository': ['', 'Build'], 'pr_id': [14979, 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build'], 'branchname': ['pr-14979', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9267, 'Build'], 'project': ['', 'Build'], 'headrev': ['dee5038a40b44191c8f214b3bca84fe80392ec11', 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'revision': ['dee5038a40b44191c8f214b3bca84fe80392ec11', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'branch': ['refs/pull/14979/head', 'Build'], 'owners': [['Central (on behalf of: JoshuaVandaele)'], 'Build']}, 'buildrequest': {'buildrequestid': 197068, 'buildsetid': 44135, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793755823, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793755164, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44135, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793755164, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 196479, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13242, 'branch': 'refs/pull/14979/head', 'revision': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793753161, 'patch': None}]}, 'parentbuild': {'buildid': 196479, 'number': 10945, 'builderid': 7, 'buildrequestid': 197051, 'workerid': 8, 'masterid': 1, 'started_at': 1793753873, 'complete_at': 1793755164, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 19, 'name': 'pr-fifoci-mvk-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/19/builds/9267'}, 'type': 'raw_bb_hook'}
2026-11-04T01:30:23.407468	{'source': 'webserver', 'raw': {'buildid': 196487, 'number': 9266, 'builderid': 19, 'buildrequestid': 197066, 'workerid': 8, 'masterid': 1, 'started_at': 1793755821, 'complete_at': 1793755823, 'locks_duration_s': 0, 'complete': True, 'state_string': 'failed update (failure)', 'results': 2, 'properties': {'headrev': ['714e59899fb680865d5579051db74961aa39f1d9', 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'revision': ['714e59899fb680865d5579051db74961aa39f1d9', 'Build'], 'owners': [['Central (on behalf of: JoshuaVandaele)'], 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mvk-osx-m1', 'Worker'], 'branchname': ['pr-14979', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9266, 'Build'], 'project': ['', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'branch': ['refs/pull/14979/head', 'Build'], 'pr_id': [14979, 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'shortrev': ['714e59', 'Trigger'], 'builderid': [19, 'Builder'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197066, 'buildsetid': 44134, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793755821, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793753868, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44134, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793753868, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 196443, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13240, 'branch': 'refs/pull/14979/head', 'revision': '714e59899fb680865d5579051db74961aa39f1d9', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793752607, 'patch': None}]}, 'parentbuild': {'buildid': 196443, 'number': 10943, 'builderid': 7, 'buildrequestid': 197017, 'workerid': 8, 'masterid': 1, 'started_at': 1793752607, 'complete_at': 1793753868, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 19, 'name': 'pr-fifoci-mvk-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/19/builds/9266'}, 'type': 'raw_bb_hook'}
2026-11-04T01:30:21.821797	{'source': 'webserver', 'raw': {'buildid': 196487, 'number': 9266, 'builderid': 19, 'buildrequestid': 197066, 'workerid': 8, 'masterid': 1, 'started_at': 1793755821, 'complete_at': None, 'locks_duration_s': 0, 'complete': False, 'state_string': 'starting', 'results': None, 'properties': {'headrev': ['714e59899fb680865d5579051db74961aa39f1d9', 'Trigger'], 'buildername': ['pr-fifoci-mvk-osx-m1', 'Builder'], 'revision': ['714e59899fb680865d5579051db74961aa39f1d9', 'Build'], 'owners': [['Central (on behalf of: JoshuaVandaele)'], 'Build'], 'branchname': ['pr-14979', 'Trigger'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9266, 'Build'], 'project': ['', 'Build'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'branch': ['refs/pull/14979/head', 'Build'], 'pr_id': [14979, 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build'], 'shortrev': ['714e59', 'Trigger'], 'builderid': [19, 'Builder'], 'repository': ['', 'Build']}, 'buildrequest': {'buildrequestid': 197066, 'buildsetid': 44134, 'builderid': 19, 'priority': 0, 'claimed': True, 'claimed_at': 1793755821, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793753868, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44134, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793753868, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 196443, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13240, 'branch': 'refs/pull/14979/head', 'revision': '714e59899fb680865d5579051db74961aa39f1d9', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793752607, 'patch': None}]}, 'parentbuild': {'buildid': 196443, 'number': 10943, 'builderid': 7, 'buildrequestid': 197017, 'workerid': 8, 'masterid': 1, 'started_at': 1793752607, 'complete_at': 1793753868, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 19, 'name': 'pr-fifoci-mvk-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/19/builds/9266'}, 'type': 'raw_bb_hook'}
2026-11-04T01:30:21.716628	{'source': 'webserver', 'raw': {'buildid': 196483, 'number': 9269, 'builderid': 21, 'buildrequestid': 197069, 'workerid': 8, 'masterid': 1, 'started_at': 1793755164, 'complete_at': 1793755821, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {'shortrev': ['dee503', 'Trigger'], 'scheduler': ['pr-fifoci-osx', 'Scheduler'], 'branch': ['refs/pull/14979/head', 'Build'], 'branchname': ['pr-14979', 'Trigger'], 'buildername': ['pr-fifoci-mtl-osx-m1', 'Builder'], 'revision': ['dee5038a40b44191c8f214b3bca84fe80392ec11', 'Build'], 'owners': [['Central (on behalf of: JoshuaVandaele)'], 'Build'], 'headrev': ['dee5038a40b44191c8f214b3bca84fe80392ec11', 'Trigger'], 'builderid': [21, 'Builder'], 'repository': ['', 'Build'], 'builddir': ['/Users/ci/worker/base/pr-fifoci-mtl-osx-m1', 'Worker'], 'warnings-count': [114, 'WarningCountingShellCommand'], 'baserev': ['df4bd441dec5d6f3cff606eea76f183963e97a44', 'Change'], 'pr_id': [14979, 'Trigger'], 'workername': ['osx-m1', 'Worker'], 'codebase': ['', 'Build'], 'basedir': ['/Users/ci/worker/base', 'Worker'], 'repo': ['dolphin-emu/dolphin', 'Trigger'], 'buildnumber': [9269, 'Build'], 'project': ['', 'Build'], 'got_revision': ['ca98b3030bcc70e67158ce899a5589aa2ec65d32', 'GitNoBranch']}, 'buildrequest': {'buildrequestid': 197069, 'buildsetid': 44135, 'builderid': 21, 'priority': 0, 'claimed': True, 'claimed_at': 1793755164, 'claimed_by_masterid': 1, 'complete': False, 'results': -1, 'submitted_at': 1793755164, 'complete_at': None, 'waited_for': False, 'properties': None}, 'buildset': {'bsid': 44135, 'external_idstring': None, 'reason': "The Triggerable scheduler named 'pr-fifoci-osx' triggered this build", 'submitted_at': 1793755164, 'complete': False, 'complete_at': None, 'results': -1, 'parent_buildid': 196479, 'parent_relationship': 'Triggered from', 'rebuilt_buildid': None, 'sourcestamps': [{'ssid': 13242, 'branch': 'refs/pull/14979/head', 'revision': 'dee5038a40b44191c8f214b3bca84fe80392ec11', 'project': '', 'repository': '', 'codebase': '', 'created_at': 1793753161, 'patch': None}]}, 'parentbuild': {'buildid': 196479, 'number': 10945, 'builderid': 7, 'buildrequestid': 197051, 'workerid': 8, 'masterid': 1, 'started_at': 1793753873, 'complete_at': 1793755164, 'locks_duration_s': 0, 'complete': True, 'state_string': 'build successful', 'results': 0, 'properties': {}}, 'parentbuilder': {'builderid': 7, 'name': 'pr-osx-universal', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'builder': {'builderid': 21, 'name': 'pr-fifoci-mtl-osx-m1', 'masterids': [1], 'description': None, 'description_format': None, 'description_html': None, 'projectid': None, 'tags': []}, 'url': 'https://dolphin.ci/#/builders/21/builds/9269'}, 'type': 'raw_bb_hook'}

Recent 'raw_gh_hook' events

2026-11-04T11:44:21.267474	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 14981, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14981', 'id': 5153617900, 'node_id': 'PR_kwDOALCn2M8AAAABMy337A', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14981', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14981.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14981.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14981', 'number': 14981, 'state': 'open', 'locked': False, 'title': "State: Don't load savestates during initialization", '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': "Doing so would cause warnings in the best case, and crashes (due to nullptr dereferences) in the worst.\n\nI'm not familiar with Dolphin's architecture, so I'm not sure if this is the best solution, as the added comment explains.", 'created_at': '2026-11-04T11:44:17Z', 'updated_at': '2026-11-04T11:44:17Z', '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/14981/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14981/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/14981/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/d59b55b9fe99b48da14b964ec0a447cb30c1692d', 'head': {'label': 'SuperSamus:dont-load-savestate-during-init', 'ref': 'dont-load-savestate-during-init', 'sha': 'd59b55b9fe99b48da14b964ec0a447cb30c1692d', '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-11-03T17:59:39Z', 'pushed_at': '2026-11-04T11:41:06Z', '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': 521121, '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': 'df4bd441dec5d6f3cff606eea76f183963e97a44', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T08:46:22Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15769, 'watchers_count': 15769, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3380, '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': 3380, 'open_issues': 482, 'watchers': 15769, '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/14981'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14981'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14981'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14981/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14981/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/14981/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/d59b55b9fe99b48da14b964ec0a447cb30c1692d'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': True, 'commits': 1, 'additions': 5, 'deletions': 1, 'changed_files': 1}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T08:46:22Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15769, 'watchers_count': 15769, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3380, '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': 3380, 'open_issues': 482, 'watchers': 15769, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': '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-11-04T08:34:25.900737	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'repository_url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/events', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'id': 6118829388, 'node_id': 'PR_kwDOALCn2M8AAAABLwnuUQ', 'number': 14962, 'title': 'Add Wayland support (Linux only)', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'labels': [], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 18, 'created_at': '2026-10-30T12:13:34Z', 'updated_at': '2026-11-04T08:34:23Z', 'closed_at': None, 'assignee': None, 'author_association': 'NONE', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14962', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14962.patch', 'merged_at': None}, 'body': 'Adds native Wayland support, so Dolphin can run without XWayland and the compositor can present the game directly. This is the same goal as #14652, but only Linux code changes. Other platforms only get two new struct fields (see "Resize"). Building with `ENABLE_WAYLAND=OFF` is unaffected.\r\n\r\nThe Vulkan surface commit is TellowKrinkle\'s and the Qt platform selection commit is BeezBumba\'s, both from #14652. Their authorship is kept.\r\n\r\n## Generative AI disclosure\r\nApart from those two commits, the code was written by Claude (Sonnet 5.5) while I directed it. It was not used for anything related to the emulated console. I, Ellie, can attest I\'ve looked through the code changes and actively avoided issues blocking the previous PR. Altering code for other platforms needlessly was avoided, the tooltips and keyboard input issues were addressed.\r\n\r\n## What changed\r\n- CMake: `ENABLE_WAYLAND` and `FindWayland.cmake`. Protocol bindings (content-type-v1, pointer-warp-v1, pointer-constraints, relative-pointer) are generated at build time and need wayland-protocols 1.41 or newer. If wayland-scanner, wayland-protocols or xkbcommon is missing, you still get a working Wayland window, but no input backend or VRR hint, and CMake warns.\r\n- Vulkan: a `VkWaylandSurfaceKHR` surface. The surface format and present mode queries retry on `VK_INCOMPLETE` instead of asserting. On Wayland the format list comes from the compositor and can change between the count query and the list query.\r\n- OpenGL: an EGL context on a `wl_egl_window`.\r\n- Resize: a `wl_surface` can\'t report its size, and Vulkan\'s `currentExtent` is undefined for it. `WindowSystemInfo` gets `render_surface_width/height` and `Presenter` gets an atomic requested-size field, which the host updates on resize. The existing surface-change API is unchanged.\r\n- Input: a ControllerInterface backend for keyboard and relative mouse, with xkbcommon key names and Center Mouse through `wp_pointer_warp_v1`. It runs on its own event queue. The Qt render widget now reports the `wl_surface` as its handle, which is what broke keyboard input and hotkeys in #14652.\r\n- VRR: the render surface sets the `wp_content_type_v1` "game" hint. `wp_tearing_control` is not used.\r\n- Tooltips: balloon tips are now `xdg_popup`s with a transient parent, because `Qt::ToolTip` with `move()` and `setMask()` doesn\'t work on Wayland.\r\n\r\n## Testing\r\nRTX 3070 Ti, on KDE Plasma, Hyprland, and Sway all with adaptive sync enabled.\r\n- Tested using the game I speedrun, LEGO Star Wars: The Video Game.\r\n- Vulkan and OpenGL both run as native Wayland windows.\r\n- Alt+Enter goes fullscreen at 3440x1440, which exercises the new keyboard and hotkey path.\r\n- VRR turns on in fullscreen and off when leaving it. On KWin the DRM `VRR_ENABLED` property read 0, 1, 0, and only while the fullscreen Dolphin window was active.\r\n- The "game" content-type hint is sent, and no `wp_tearing_control` object is created (checked in the `WAYLAND_DEBUG` log).\r\n- Balloon tooltips render correctly in Config > Graphics.\r\n- Switching to the correct input device (Wayland/0/seat0) leaves existing binds working and unchanged.\r\n- Scaling and fractional scaling work as expected.\r\n- Screen sharing using xdg-desktop-portal over Discord and recording with obs-vkcapture work as expected.\r\n\r\nEvery commit builds on Linux and is formatted with clang-format 19.1.7. I also built with `ENABLE_WAYLAND=OFF`.\r\n\r\nNot tested: Windows, macOS or Android builds. Lock Cursor isn\'t implemented on Wayland.', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6626385853', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14962#issuecomment-6626385853', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14962', 'id': 6626385853, 'node_id': 'IC_kwDOALCn2M8AAAABivafvQ', 'user': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T08:34:23Z', 'updated_at': '2026-11-04T08:34:23Z', 'body': '> Render to Main and the split adjustment seems to work properly now with KDE/KWin.\r\n\r\nnice! I think this is ready to merge but the flatpak builders need to be rerun. Other small issues like this may continue to pop up, especially when commits touch Qt changes will need to be tested on xcb and wayland in the future.', 'author_association': 'NONE', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/6626385853/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': None, 'minimized': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'ellierocks', 'id': 275226857, 'node_id': 'U_kgDOEGeg6Q', 'avatar_url': 'https://avatars.githubusercontent.com/u/275226857?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/ellierocks', 'html_url': 'https://github.com/ellierocks', 'followers_url': 'https://api.github.com/users/ellierocks/followers', 'following_url': 'https://api.github.com/users/ellierocks/following{/other_user}', 'gists_url': 'https://api.github.com/users/ellierocks/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/ellierocks/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/ellierocks/subscriptions', 'organizations_url': 'https://api.github.com/users/ellierocks/orgs', 'repos_url': 'https://api.github.com/users/ellierocks/repos', 'events_url': 'https://api.github.com/users/ellierocks/events{/privacy}', 'received_events_url': 'https://api.github.com/users/ellierocks/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T08:06:24.515035	{'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465132899', 'pull_request_review_id': 5765232256, 'id': 4465132899, 'node_id': 'PRRC_kwDOALCn2M8AAAABCiSFYw', 'diff_hunk': '@@ -251,6 +252,7 @@ class MainWindow final : public QMainWindow\n   bool m_fullscreen_requested = false;\n   bool m_is_screensaver_inhibited = false;\n   std::unique_ptr<BootParameters> m_pending_boot;\n+  std::optional<std::string> m_optical_drive;', 'path': 'Source/Core/DolphinQt/MainWindow.h', 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "This is a leftover from a previous iteration. I'll change it to use `GetInsertedOpticalDrive`, as it can also prevent some edge cases where the core and the UI might end incorrectly pointing to different drives", 'created_at': '2026-11-04T08:06:22Z', 'updated_at': '2026-11-04T08:06:22Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465132899', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465132899'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465132899'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465132899/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': 255, 'original_line': 255, 'side': 'RIGHT', 'in_reply_to_id': 4454462737, 'author_association': 'MEMBER', 'original_position': 12, 'position': 12, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'id': 5120175976, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'number': 14974, 'state': 'open', 'locked': False, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-04T08:06:07Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '920145f16bc85fdc49454f5120cd997373cae04d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c', 'head': {'label': 'mbc07:BootFromOpticalDiscRevival', 'ref': 'BootFromOpticalDiscRevival', 'sha': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 38133254, 'node_id': 'MDEwOlJlcG9zaXRvcnkzODEzMzI1NA==', 'name': 'dolphin', 'full_name': 'mbc07/dolphin', 'private': False, 'owner': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/mbc07/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/mbc07/dolphin', 'forks_url': 'https://api.github.com/repos/mbc07/dolphin/forks', 'keys_url': 'https://api.github.com/repos/mbc07/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/mbc07/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/mbc07/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/mbc07/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/mbc07/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/mbc07/dolphin/events', 'assignees_url': 'https://api.github.com/repos/mbc07/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/mbc07/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/mbc07/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/mbc07/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/mbc07/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/mbc07/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/mbc07/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/mbc07/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/mbc07/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/mbc07/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/mbc07/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/mbc07/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/mbc07/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/mbc07/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/mbc07/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/mbc07/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/mbc07/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/mbc07/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/mbc07/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/mbc07/dolphin/merges', 'archive_url': 'https://api.github.com/repos/mbc07/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/mbc07/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/mbc07/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/mbc07/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/mbc07/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/mbc07/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/mbc07/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/mbc07/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/mbc07/dolphin/deployments', 'created_at': '2015-06-26T20:55:12Z', 'updated_at': '2026-11-02T18:13:33Z', 'pushed_at': '2026-11-02T09:35:30Z', 'git_url': 'git://github.com/mbc07/dolphin.git', 'ssh_url': 'git@github.com:mbc07/dolphin.git', 'clone_url': 'https://github.com/mbc07/dolphin.git', 'svn_url': 'https://github.com/mbc07/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 520861, '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': 'd182533d363eae8c753d37cfad4107930da2019a', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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/14974'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T08:06:24.514128	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5765232256, 'node_id': 'PRR_kwDOALCn2M8AAAABV6J2gA', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765232256', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765232256'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'submitted_at': '2026-11-04T08:06:22Z', 'updated_at': '2026-11-04T08:06:22Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'id': 5120175976, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'number': 14974, 'state': 'open', 'locked': False, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-04T08:06:07Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '920145f16bc85fdc49454f5120cd997373cae04d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c', 'head': {'label': 'mbc07:BootFromOpticalDiscRevival', 'ref': 'BootFromOpticalDiscRevival', 'sha': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 38133254, 'node_id': 'MDEwOlJlcG9zaXRvcnkzODEzMzI1NA==', 'name': 'dolphin', 'full_name': 'mbc07/dolphin', 'private': False, 'owner': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/mbc07/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/mbc07/dolphin', 'forks_url': 'https://api.github.com/repos/mbc07/dolphin/forks', 'keys_url': 'https://api.github.com/repos/mbc07/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/mbc07/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/mbc07/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/mbc07/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/mbc07/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/mbc07/dolphin/events', 'assignees_url': 'https://api.github.com/repos/mbc07/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/mbc07/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/mbc07/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/mbc07/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/mbc07/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/mbc07/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/mbc07/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/mbc07/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/mbc07/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/mbc07/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/mbc07/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/mbc07/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/mbc07/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/mbc07/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/mbc07/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/mbc07/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/mbc07/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/mbc07/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/mbc07/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/mbc07/dolphin/merges', 'archive_url': 'https://api.github.com/repos/mbc07/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/mbc07/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/mbc07/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/mbc07/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/mbc07/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/mbc07/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/mbc07/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/mbc07/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/mbc07/dolphin/deployments', 'created_at': '2015-06-26T20:55:12Z', 'updated_at': '2026-11-02T18:13:33Z', 'pushed_at': '2026-11-02T09:35:30Z', 'git_url': 'git://github.com/mbc07/dolphin.git', 'ssh_url': 'git@github.com:mbc07/dolphin.git', 'clone_url': 'https://github.com/mbc07/dolphin.git', 'svn_url': 'https://github.com/mbc07/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 520861, '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': 'd182533d363eae8c753d37cfad4107930da2019a', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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/14974'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T08:06:09.624469	{'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465130546', 'pull_request_review_id': 5765229058, 'id': 4465130546, 'node_id': 'PRRC_kwDOALCn2M8AAAABCiR8Mg', 'diff_hunk': '@@ -0,0 +1,776 @@\n+// Copyright 2026 Dolphin Emulator Project', 'path': 'Source/Core/Common/SCSIDevice.cpp', 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'I have no particular preference, and I modeled this similar to the previous "Boot from DVD Backup" implementation. It seems we already have precedents for what you\'re suggesting on Core/HW/WiimoteReal and I guess it makes reading the code easier, so I\'ll split there too', 'created_at': '2026-11-04T08:06:07Z', 'updated_at': '2026-11-04T08:06:07Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465130546', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465130546'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465130546'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465130546/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': 1, 'original_line': 1, 'side': 'RIGHT', 'in_reply_to_id': 4453291256, 'author_association': 'MEMBER', 'original_position': 1, 'position': 1, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'id': 5120175976, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'number': 14974, 'state': 'open', 'locked': False, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-04T08:05:53Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '920145f16bc85fdc49454f5120cd997373cae04d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c', 'head': {'label': 'mbc07:BootFromOpticalDiscRevival', 'ref': 'BootFromOpticalDiscRevival', 'sha': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 38133254, 'node_id': 'MDEwOlJlcG9zaXRvcnkzODEzMzI1NA==', 'name': 'dolphin', 'full_name': 'mbc07/dolphin', 'private': False, 'owner': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/mbc07/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/mbc07/dolphin', 'forks_url': 'https://api.github.com/repos/mbc07/dolphin/forks', 'keys_url': 'https://api.github.com/repos/mbc07/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/mbc07/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/mbc07/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/mbc07/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/mbc07/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/mbc07/dolphin/events', 'assignees_url': 'https://api.github.com/repos/mbc07/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/mbc07/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/mbc07/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/mbc07/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/mbc07/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/mbc07/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/mbc07/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/mbc07/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/mbc07/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/mbc07/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/mbc07/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/mbc07/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/mbc07/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/mbc07/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/mbc07/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/mbc07/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/mbc07/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/mbc07/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/mbc07/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/mbc07/dolphin/merges', 'archive_url': 'https://api.github.com/repos/mbc07/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/mbc07/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/mbc07/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/mbc07/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/mbc07/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/mbc07/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/mbc07/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/mbc07/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/mbc07/dolphin/deployments', 'created_at': '2015-06-26T20:55:12Z', 'updated_at': '2026-11-02T18:13:33Z', 'pushed_at': '2026-11-02T09:35:30Z', 'git_url': 'git://github.com/mbc07/dolphin.git', 'ssh_url': 'git@github.com:mbc07/dolphin.git', 'clone_url': 'https://github.com/mbc07/dolphin.git', 'svn_url': 'https://github.com/mbc07/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 520861, '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': 'd182533d363eae8c753d37cfad4107930da2019a', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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/14974'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T08:06:09.623583	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5765229058, 'node_id': 'PRR_kwDOALCn2M8AAAABV6JqAg', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765229058', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765229058'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'submitted_at': '2026-11-04T08:06:07Z', 'updated_at': '2026-11-04T08:06:07Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'id': 5120175976, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'number': 14974, 'state': 'open', 'locked': False, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-04T08:05:53Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '920145f16bc85fdc49454f5120cd997373cae04d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c', 'head': {'label': 'mbc07:BootFromOpticalDiscRevival', 'ref': 'BootFromOpticalDiscRevival', 'sha': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 38133254, 'node_id': 'MDEwOlJlcG9zaXRvcnkzODEzMzI1NA==', 'name': 'dolphin', 'full_name': 'mbc07/dolphin', 'private': False, 'owner': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/mbc07/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/mbc07/dolphin', 'forks_url': 'https://api.github.com/repos/mbc07/dolphin/forks', 'keys_url': 'https://api.github.com/repos/mbc07/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/mbc07/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/mbc07/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/mbc07/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/mbc07/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/mbc07/dolphin/events', 'assignees_url': 'https://api.github.com/repos/mbc07/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/mbc07/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/mbc07/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/mbc07/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/mbc07/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/mbc07/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/mbc07/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/mbc07/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/mbc07/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/mbc07/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/mbc07/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/mbc07/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/mbc07/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/mbc07/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/mbc07/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/mbc07/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/mbc07/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/mbc07/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/mbc07/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/mbc07/dolphin/merges', 'archive_url': 'https://api.github.com/repos/mbc07/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/mbc07/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/mbc07/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/mbc07/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/mbc07/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/mbc07/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/mbc07/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/mbc07/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/mbc07/dolphin/deployments', 'created_at': '2015-06-26T20:55:12Z', 'updated_at': '2026-11-02T18:13:33Z', 'pushed_at': '2026-11-02T09:35:30Z', 'git_url': 'git://github.com/mbc07/dolphin.git', 'ssh_url': 'git@github.com:mbc07/dolphin.git', 'clone_url': 'https://github.com/mbc07/dolphin.git', 'svn_url': 'https://github.com/mbc07/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 520861, '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': 'd182533d363eae8c753d37cfad4107930da2019a', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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/14974'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T08:05:55.976061	{'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465128178', 'pull_request_review_id': 5765226107, 'id': 4465128178, 'node_id': 'PRRC_kwDOALCn2M8AAAABCiRy8g', 'diff_hunk': '@@ -0,0 +1,776 @@\n+// Copyright 2026 Dolphin Emulator Project\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+#include "Common/SCSIDevice.h"\n+\n+#include <algorithm>\n+#include <array>\n+#include <cctype>\n+#include <cerrno>\n+#include <cstddef>\n+#include <filesystem>\n+#include <map>\n+#include <mutex>\n+#include <optional>\n+#include <span>\n+#include <string>\n+#include <string_view>\n+#include <system_error>\n+#include <vector>\n+\n+#include <fmt/format.h>\n+\n+#if defined(_WIN32)\n+#include <windows.h>\n+#include <winioctl.h>\n+\n+#include <ntddscsi.h>\n+#include <ntddstor.h>\n+#elif defined(__linux__) && !defined(__ANDROID__)\n+#include <fcntl.h>\n+#include <scsi/sg.h>\n+#include <sys/ioctl.h>\n+#include <unistd.h>\n+#endif\n+\n+#include "Common/CommonFuncs.h"\n+#include "Common/CommonTypes.h"\n+#include "Common/FileUtil.h"\n+#include "Common/Logging/Log.h"\n+#include "Common/StringUtil.h"\n+#include "Common/Swap.h"\n+\n+namespace Common\n+{\n+SCSIDevice::~SCSIDevice()\n+{\n+  Close();\n+}\n+\n+#if defined(_WIN32)\n+\n+namespace\n+{\n+// Timeout for the TEST UNIT READY that reads drive status. Short, so a spinning-up drive is\n+// reported as such at once instead of blocking until it is ready\n+constexpr u32 STATUS_PROBE_TIMEOUT_SECONDS = 1;\n+}  // namespace\n+\n+namespace\n+{\n+// SCSI_PASS_THROUGH_DIRECT and its sense buffer in one contiguous block, so the kernel can write\n+// sense data at SenseInfoOffset\n+struct SPTDWithSense\n+{\n+  SCSI_PASS_THROUGH_DIRECT sptd;\n+  std::array<u8, 24> sense;\n+};\n+\n+std::wstring ToDevicePath(const std::string& path)\n+{\n+  return UTF8ToWString(R"(\\\\.\\)" + path);\n+}\n+\n+HANDLE OpenDeviceHandle(const std::string& path, DWORD access)\n+{\n+  return CreateFileW(ToDevicePath(path).c_str(), access, FILE_SHARE_READ | FILE_SHARE_WRITE,\n+                     nullptr, OPEN_EXISTING, 0, nullptr);\n+}\n+\n+void DecodeSense(const SPTDWithSense& sptd, SCSISense* sense)\n+{\n+  sense->status = sptd.sptd.ScsiStatus;\n+  sense->sense_key = sptd.sense[2] & 0x0F;\n+  sense->asc = sptd.sense[12];\n+  sense->ascq = sptd.sense[13];\n+}\n+\n+// Returns false only if the OS rejects the IOCTL itself\n+bool SendPassThrough(HANDLE handle, std::span<const u8> cdb, std::span<u8> buffer,\n+                     SCSIDataDirection direction, u32 timeout_seconds, SPTDWithSense* sptd)\n+{\n+  if (cdb.size() > sizeof(SCSI_PASS_THROUGH_DIRECT::Cdb))\n+    return false;\n+\n+  *sptd = {};\n+  sptd->sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT);\n+  sptd->sptd.CdbLength = static_cast<UCHAR>(cdb.size());\n+  sptd->sptd.SenseInfoLength = static_cast<UCHAR>(sptd->sense.size());\n+  sptd->sptd.DataIn = static_cast<UCHAR>(direction);\n+  sptd->sptd.DataTransferLength = static_cast<ULONG>(buffer.size());\n+  sptd->sptd.TimeOutValue = timeout_seconds;\n+  sptd->sptd.DataBuffer = buffer.empty() ? nullptr : buffer.data();\n+  sptd->sptd.SenseInfoOffset = static_cast<ULONG>(offsetof(SPTDWithSense, sense));\n+  std::ranges::copy(cdb, sptd->sptd.Cdb);\n+\n+  DWORD bytes_returned = 0;\n+  return DeviceIoControl(handle, IOCTL_SCSI_PASS_THROUGH_DIRECT, sptd, sizeof(*sptd), sptd,\n+                         sizeof(*sptd), &bytes_returned, nullptr) != FALSE;\n+}\n+\n+std::string ReadDescriptorString(std::span<const u8> data, u32 offset)\n+{\n+  if (offset == 0 || offset >= data.size())\n+    return {};\n+  const std::string_view text(reinterpret_cast<const char*>(data.data()) + offset,\n+                              data.size() - offset);\n+  return std::string(StripWhitespace(text.substr(0, text.find(\'\\0\'))));\n+}\n+}  // namespace\n+\n+bool SCSIDevice::IsSupported()\n+{\n+  return true;\n+}\n+\n+bool SCSIDevice::Open(const std::string& path, bool read_write)\n+{\n+  Close();\n+\n+  DWORD desired_access = GENERIC_READ;\n+  if (read_write)\n+    desired_access |= GENERIC_WRITE;\n+\n+  HANDLE handle = OpenDeviceHandle(path, desired_access);\n+\n+  // Standard user accounts can be refused GENERIC_WRITE, so fall back to read-only before failing\n+  if (handle == INVALID_HANDLE_VALUE && read_write)\n+    handle = OpenDeviceHandle(path, GENERIC_READ);\n+\n+  if (handle == INVALID_HANDLE_VALUE)\n+  {\n+    ERROR_LOG_FMT(COMMON, "Failed to open optical drive {}: {}", path, GetLastErrorString());\n+    return false;\n+  }\n+\n+  m_handle = handle;\n+  m_path = path;\n+  return true;\n+}\n+\n+void SCSIDevice::Close()\n+{\n+  if (m_handle != nullptr)\n+  {\n+    CloseHandle(m_handle);\n+    m_handle = nullptr;\n+  }\n+}\n+\n+bool SCSIDevice::IsOpen() const\n+{\n+  return m_handle != nullptr;\n+}\n+\n+bool SCSIDevice::SendCommand(std::span<const u8> cdb, std::span<u8> buffer,\n+                             SCSIDataDirection direction, u32 timeout_seconds,\n+                             SCSISense* sense) const\n+{\n+  if (!IsOpen() || cdb.empty())\n+    return false;\n+\n+  DEBUG_LOG_FMT(COMMON, "Sending SCSI opcode {:02X} to {} ({} data bytes)", cdb[0], m_path,\n+                buffer.size());\n+\n+  SPTDWithSense sptd{};\n+  if (!SendPassThrough(m_handle, cdb, buffer, direction, timeout_seconds, &sptd))\n+  {\n+    ERROR_LOG_FMT(COMMON, "SCSI passthrough for opcode {:02X} failed: {}", cdb[0],\n+                  GetLastErrorString());\n+    return false;\n+  }\n+\n+  SCSISense decoded;\n+  DecodeSense(sptd, &decoded);\n+  if (sense != nullptr)\n+    *sense = decoded;\n+\n+  // Any status other than 0x00 (GOOD) is a device-side failure\n+  if (decoded.status != 0)\n+  {\n+    ERROR_LOG_FMT(COMMON,\n+                  "SCSI opcode {:02X} failed. Status: {:02X}, Sense Key: {:02X}, ASC: {:02X}, "\n+                  "ASCQ: {:02X}",\n+                  cdb[0], decoded.status, decoded.sense_key, decoded.asc, decoded.ascq);\n+    return false;\n+  }\n+  return true;\n+}\n+\n+OpticalDriveStatus SCSIDevice::GetDriveStatus(const std::string& path)\n+{\n+  HANDLE handle = OpenDeviceHandle(path, GENERIC_READ | GENERIC_WRITE);\n+  if (handle == INVALID_HANDLE_VALUE)\n+    handle = OpenDeviceHandle(path, GENERIC_READ);\n+\n+  if (handle == INVALID_HANDLE_VALUE)\n+  {\n+    const DWORD error = GetLastError();\n+    if (error == ERROR_NOT_READY || error == ERROR_MEDIA_CHANGED)\n+      return OpticalDriveStatus::NoDisc;\n+    return OpticalDriveStatus::NotReadyOther;\n+  }\n+\n+  // TEST UNIT READY (opcode 0x00). A spinning-up drive answers it at once with a CHECK CONDITION\n+  // (sense 02/04/01), so a short timeout returns the real state instead of waiting for the drive\n+  constexpr std::array<u8, 6> cdb{};\n+  DEBUG_LOG_FMT(COMMON, "Sending SCSI opcode {:02X} to {} (0 data bytes)", cdb[0], path);\n+  SPTDWithSense sptd{};\n+  const bool sent =\n+      SendPassThrough(handle, cdb, {}, SCSIDataDirection::In, STATUS_PROBE_TIMEOUT_SECONDS, &sptd);', 'path': 'Source/Core/Common/SCSIDevice.cpp', 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "Good catch. It's not intentional and was an oversight carried over from the CLI tool I made before working on this PR", 'created_at': '2026-11-04T08:05:53Z', 'updated_at': '2026-11-04T08:05:53Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465128178', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465128178'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465128178'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465128178/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': None, 'original_start_line': None, 'start_side': None, 'line': 220, 'original_line': 220, 'side': 'RIGHT', 'in_reply_to_id': 4452521727, 'author_association': 'MEMBER', 'original_position': 220, 'position': 220, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'id': 5120175976, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'number': 14974, 'state': 'open', 'locked': False, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-04T08:05:39Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '920145f16bc85fdc49454f5120cd997373cae04d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c', 'head': {'label': 'mbc07:BootFromOpticalDiscRevival', 'ref': 'BootFromOpticalDiscRevival', 'sha': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 38133254, 'node_id': 'MDEwOlJlcG9zaXRvcnkzODEzMzI1NA==', 'name': 'dolphin', 'full_name': 'mbc07/dolphin', 'private': False, 'owner': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/mbc07/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/mbc07/dolphin', 'forks_url': 'https://api.github.com/repos/mbc07/dolphin/forks', 'keys_url': 'https://api.github.com/repos/mbc07/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/mbc07/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/mbc07/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/mbc07/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/mbc07/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/mbc07/dolphin/events', 'assignees_url': 'https://api.github.com/repos/mbc07/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/mbc07/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/mbc07/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/mbc07/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/mbc07/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/mbc07/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/mbc07/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/mbc07/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/mbc07/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/mbc07/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/mbc07/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/mbc07/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/mbc07/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/mbc07/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/mbc07/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/mbc07/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/mbc07/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/mbc07/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/mbc07/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/mbc07/dolphin/merges', 'archive_url': 'https://api.github.com/repos/mbc07/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/mbc07/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/mbc07/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/mbc07/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/mbc07/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/mbc07/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/mbc07/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/mbc07/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/mbc07/dolphin/deployments', 'created_at': '2015-06-26T20:55:12Z', 'updated_at': '2026-11-02T18:13:33Z', 'pushed_at': '2026-11-02T09:35:30Z', 'git_url': 'git://github.com/mbc07/dolphin.git', 'ssh_url': 'git@github.com:mbc07/dolphin.git', 'clone_url': 'https://github.com/mbc07/dolphin.git', 'svn_url': 'https://github.com/mbc07/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 520861, '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': 'd182533d363eae8c753d37cfad4107930da2019a', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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/14974'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T08:05:55.975201	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5765226107, 'node_id': 'PRR_kwDOALCn2M8AAAABV6Jeew', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765226107', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765226107'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'submitted_at': '2026-11-04T08:05:53Z', 'updated_at': '2026-11-04T08:05:53Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'id': 5120175976, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'number': 14974, 'state': 'open', 'locked': False, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-04T08:05:39Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '920145f16bc85fdc49454f5120cd997373cae04d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c', 'head': {'label': 'mbc07:BootFromOpticalDiscRevival', 'ref': 'BootFromOpticalDiscRevival', 'sha': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 38133254, 'node_id': 'MDEwOlJlcG9zaXRvcnkzODEzMzI1NA==', 'name': 'dolphin', 'full_name': 'mbc07/dolphin', 'private': False, 'owner': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/mbc07/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/mbc07/dolphin', 'forks_url': 'https://api.github.com/repos/mbc07/dolphin/forks', 'keys_url': 'https://api.github.com/repos/mbc07/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/mbc07/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/mbc07/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/mbc07/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/mbc07/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/mbc07/dolphin/events', 'assignees_url': 'https://api.github.com/repos/mbc07/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/mbc07/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/mbc07/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/mbc07/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/mbc07/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/mbc07/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/mbc07/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/mbc07/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/mbc07/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/mbc07/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/mbc07/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/mbc07/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/mbc07/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/mbc07/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/mbc07/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/mbc07/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/mbc07/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/mbc07/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/mbc07/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/mbc07/dolphin/merges', 'archive_url': 'https://api.github.com/repos/mbc07/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/mbc07/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/mbc07/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/mbc07/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/mbc07/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/mbc07/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/mbc07/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/mbc07/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/mbc07/dolphin/deployments', 'created_at': '2015-06-26T20:55:12Z', 'updated_at': '2026-11-02T18:13:33Z', 'pushed_at': '2026-11-02T09:35:30Z', 'git_url': 'git://github.com/mbc07/dolphin.git', 'ssh_url': 'git@github.com:mbc07/dolphin.git', 'clone_url': 'https://github.com/mbc07/dolphin.git', 'svn_url': 'https://github.com/mbc07/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 520861, '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': 'd182533d363eae8c753d37cfad4107930da2019a', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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/14974'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T08:05:41.144877	{'source': 'webserver', 'gh_type': 'pull_request_review_comment', 'raw': {'action': 'created', 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465125222', 'pull_request_review_id': 5765222752, 'id': 4465125222, 'node_id': 'PRRC_kwDOALCn2M8AAAABCiRnZg', 'diff_hunk': '@@ -0,0 +1,94 @@\n+// Copyright 2026 Dolphin Emulator Project\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+\n+#pragma once\n+\n+#include <functional>\n+#include <map>\n+#include <memory>\n+#include <optional>\n+#include <string>\n+#include <vector>\n+\n+#include <QObject>\n+#include <QString>\n+\n+#include "Common/Flag.h"\n+#include "Common/SCSIDevice.h"\n+#include "Common/WorkQueueThread.h"\n+#include "DiscIO/OmniDrive.h"\n+\n+// Lists the host\'s optical drives at once and fills in what is known about each from a drive cache\n+// that lasts until Dolphin exits. Only a drive new to the cache is queried for its firmware, once,\n+// on a worker thread, so the UI never waits for a drive and known drives are left alone.', 'path': 'Source/Core/DolphinQt/OpticalDriveWatcher.h', 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'original_commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': "You're right, that comment is only valid for the Windows code path, as the Linux code path uses a different route to retrieve the serial number that does wait for a drive", 'created_at': '2026-11-04T08:05:38Z', 'updated_at': '2026-11-04T08:05:39Z', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465125222', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465125222'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#discussion_r4465125222'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/comments/4465125222/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'start_line': 21, 'original_start_line': 21, 'start_side': 'RIGHT', 'line': 23, 'original_line': 23, 'side': 'RIGHT', 'in_reply_to_id': 4452462887, 'author_association': 'MEMBER', 'original_position': 23, 'position': 23, 'subject_type': 'line'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'id': 5120175976, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'number': 14974, 'state': 'open', 'locked': False, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T20:30:33Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '920145f16bc85fdc49454f5120cd997373cae04d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c', 'head': {'label': 'mbc07:BootFromOpticalDiscRevival', 'ref': 'BootFromOpticalDiscRevival', 'sha': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 38133254, 'node_id': 'MDEwOlJlcG9zaXRvcnkzODEzMzI1NA==', 'name': 'dolphin', 'full_name': 'mbc07/dolphin', 'private': False, 'owner': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/mbc07/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/mbc07/dolphin', 'forks_url': 'https://api.github.com/repos/mbc07/dolphin/forks', 'keys_url': 'https://api.github.com/repos/mbc07/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/mbc07/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/mbc07/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/mbc07/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/mbc07/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/mbc07/dolphin/events', 'assignees_url': 'https://api.github.com/repos/mbc07/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/mbc07/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/mbc07/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/mbc07/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/mbc07/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/mbc07/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/mbc07/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/mbc07/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/mbc07/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/mbc07/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/mbc07/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/mbc07/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/mbc07/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/mbc07/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/mbc07/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/mbc07/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/mbc07/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/mbc07/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/mbc07/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/mbc07/dolphin/merges', 'archive_url': 'https://api.github.com/repos/mbc07/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/mbc07/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/mbc07/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/mbc07/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/mbc07/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/mbc07/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/mbc07/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/mbc07/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/mbc07/dolphin/deployments', 'created_at': '2015-06-26T20:55:12Z', 'updated_at': '2026-11-02T18:13:33Z', 'pushed_at': '2026-11-02T09:35:30Z', 'git_url': 'git://github.com/mbc07/dolphin.git', 'ssh_url': 'git@github.com:mbc07/dolphin.git', 'clone_url': 'https://github.com/mbc07/dolphin.git', 'svn_url': 'https://github.com/mbc07/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 520861, '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': 'd182533d363eae8c753d37cfad4107930da2019a', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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/14974'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T08:05:41.142984	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5765222752, 'node_id': 'PRR_kwDOALCn2M8AAAABV6JRYA', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'state': 'commented', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765222752', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974#pullrequestreview-5765222752'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974'}}, 'submitted_at': '2026-11-04T08:05:38Z', 'updated_at': '2026-11-04T08:05:38Z', 'author_association': 'MEMBER'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974', 'id': 5120175976, 'node_id': 'PR_kwDOALCn2M8AAAABMS-vaA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14974', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14974.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974', 'number': 14974, 'state': 'open', 'locked': False, 'title': 'Core/DolphinQt: Restore "Boot from DVD Backup" and allow booting original discs with OmniDrive firmware', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'At long last, this PR restores the ability of running games from DVD backups (originally removed on PR #11456) and, for the first time in Dolphin, allows running games directly from original discs on drives flashed with [OmniDrive firmware](https://github.com/RibShark/OmniDrive):\r\n\r\nhttps://github.com/user-attachments/assets/626b3c7e-cd6a-48f0-9962-eaa6b1f0805a\r\n\r\nOn supported OSes (currently Windows and Linux), there\'s a new "Boot From Optical Disc" menu entry on File, and "Change Disc" now opens a popup that lets you change between a disc image or a physical disc or vice-versa:\r\n\r\nhttps://github.com/user-attachments/assets/0af57155-391c-41c8-b78c-bc70a63a7703\r\n\r\nThis implementation is heavily inspired on [redumper](https://github.com/superg/redumper), so Dolphin directly talks to the optical drive via low level SCSI multimedia commands instead of relying on the old approach that was derived from a very outdated version of libcdio.\r\n\r\n### Features and limitations\r\n* Although the UI changes are minimal (for now), I\'ve tried to make this work as intuitively as possible behind the scenes. I think the most noteworthy ones are that optical drives can be hot plugged at any time (if you\'re using USB to SATA adapters or portable drives) and if you boot from a physical disc and then eject it (either via File => Eject Disc or by pressing the Eject button on the drive itself), the disc will be ejected from the emulated console too. If you reinsert a disc later, it\'ll automatically reinsert the disc on the emulated console too (e.g. multi disc games that ask you to insert the next disc)\r\n* I didn\'t initially plan for this, but the `-i` flag from DolphinTool now accepts disc drive paths (e.g. `-i D:` or `-i /dev/sr0`). A side effect of that is you can now rip original discs to ISO, RVZ, GCZ or WIA directly from DolphinTool, if you have an OmniDrive-enabled drive\r\n* Emulated disc speed code is bypassed when using physical discs, as well as "Load Whole Game Into Memory". Beware of speeding up the emulation by setting the speed limit above 100% though, that can cause audio/video issues and even break games if you let them run too fast for too long, since the optical drive can\'t keep up ("An error occurred, please turn the GC/Wii off and refer to the operating manual")\r\n* Loading speeds are a bit slower than what I remember from playing on a real GC/Wii. The handful of games I tried still worked fine, though\r\n* When RetroAchievements are enabled, its hashing can cause a bit of slow loading speeds right after booting a game. It\'s more noticeable with Wii titles\r\n* Currently, [GameCube games that uses DTK Audio](https://wiki.dolphin-emu.org/index.php?title=Category:DTK_Audio_games) are nearly unplayable from physical discs, as the DTK audio path causes constant drive seeking, which consequently reduces the read speeds significantly. I intend to explore a few caching techniques to fix this, but it will be on a separate PR\r\n* Minimal testing was done on Linux, apart from compiling from source on Ubuntu 26.04.1 LTS and ensuring it could boot a game\r\n* Currently there\'s no macOS support, and I won\'t be adding it as I have no access to any Apple hardware. Porting should be easy, though, as all OS-specific code are isolated on `SCSIDevice.cpp/.h`\r\n\r\n### Generative AI disclosure\r\nThe source code from [redumper (b705)](https://github.com/superg/redumper/tree/b705) was fed into a LLM, which was tasked on creating a technical specs document about how it handles standard and raw OmniDrive reads. Then, I\'ve made a Windows-only CLI tool implementing only the absolute minimum required for the features that would be relevant for us, based on that document. DVD descrambling was added next and used this [reference implementation](https://github.com/Deterous/DVD-Scrambler) from Deterous. Once the CLI tool was feature complete, I used a LLM again, this time feeding it parts of the Linux (6.18 LTS) kernel source code, to assist with adding Linux compatibility to it.\r\n\r\nFinally, I started working with the Dolphin\'s source. The code this PR adds is directly derived from the CLI tool, but no LLMs were used beyond that point. I\'m also not touching any emulation code, the changes in DVDInterface reuses existing behavior or are based in code comments that already existed in Dolphin before this PR.\r\n\r\n### Licenses and attribuition\r\nThe bulk of this PR was heavily based on [redumper](https://github.com/superg/redumper), which is licensed under the GPLv3. As mentioned earlier, I also used the [descrambling implementation from Deterous](https://github.com/Deterous/DVD-Scrambler) as a reference, which the repo itself doesn\'t define a license, but directly mentions being made as the reference for redumper, so I think we\'re good? I can try contacting Deterous too for explicit approval, if needed...', 'created_at': '2026-11-02T12:18:18Z', 'updated_at': '2026-11-03T20:30:33Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '920145f16bc85fdc49454f5120cd997373cae04d', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c', 'head': {'label': 'mbc07:BootFromOpticalDiscRevival', 'ref': 'BootFromOpticalDiscRevival', 'sha': 'ab0b808663fe623e8e8a52396273ee5a86cf440c', 'user': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 38133254, 'node_id': 'MDEwOlJlcG9zaXRvcnkzODEzMzI1NA==', 'name': 'dolphin', 'full_name': 'mbc07/dolphin', 'private': False, 'owner': {'login': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/mbc07/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/mbc07/dolphin', 'forks_url': 'https://api.github.com/repos/mbc07/dolphin/forks', 'keys_url': 'https://api.github.com/repos/mbc07/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/mbc07/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/mbc07/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/mbc07/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/mbc07/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/mbc07/dolphin/events', 'assignees_url': 'https://api.github.com/repos/mbc07/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/mbc07/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/mbc07/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/mbc07/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/mbc07/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/mbc07/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/mbc07/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/mbc07/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/mbc07/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/mbc07/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/mbc07/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/mbc07/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/mbc07/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/mbc07/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/mbc07/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/mbc07/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/mbc07/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/mbc07/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/mbc07/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/mbc07/dolphin/merges', 'archive_url': 'https://api.github.com/repos/mbc07/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/mbc07/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/mbc07/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/mbc07/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/mbc07/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/mbc07/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/mbc07/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/mbc07/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/mbc07/dolphin/deployments', 'created_at': '2015-06-26T20:55:12Z', 'updated_at': '2026-11-02T18:13:33Z', 'pushed_at': '2026-11-02T09:35:30Z', 'git_url': 'git://github.com/mbc07/dolphin.git', 'ssh_url': 'git@github.com:mbc07/dolphin.git', 'clone_url': 'https://github.com/mbc07/dolphin.git', 'svn_url': 'https://github.com/mbc07/dolphin', 'homepage': 'https://dolphin-emu.org/', 'size': 520861, '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': 'd182533d363eae8c753d37cfad4107930da2019a', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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/14974'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14974'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14974/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14974/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/14974/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/ab0b808663fe623e8e8a52396273ee5a86cf440c'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T07:38:38Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15768, 'watchers_count': 15768, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15768, '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': 'mbc07', 'id': 8005966, 'node_id': 'MDQ6VXNlcjgwMDU5NjY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/8005966?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/mbc07', 'html_url': 'https://github.com/mbc07', 'followers_url': 'https://api.github.com/users/mbc07/followers', 'following_url': 'https://api.github.com/users/mbc07/following{/other_user}', 'gists_url': 'https://api.github.com/users/mbc07/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/mbc07/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/mbc07/subscriptions', 'organizations_url': 'https://api.github.com/users/mbc07/orgs', 'repos_url': 'https://api.github.com/users/mbc07/repos', 'events_url': 'https://api.github.com/users/mbc07/events{/privacy}', 'received_events_url': 'https://api.github.com/users/mbc07/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:48.680519	{'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'completed', 'check_run': {'id': 126428651083, 'name': 'build-flake', 'node_id': 'CR_kwDOCriaAc8AAAAdb7weSw', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'external_id': '32bd4e7a-20c7-52d7-b050-79625e477d37', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428651083', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786156669/job/126428651083', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786156669/job/126428651083', 'status': 'completed', 'conclusion': 'success', 'started_at': '2026-11-04T06:32:07Z', 'completed_at': '2026-11-04T06:32:45Z', 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 2, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428651083/annotations'}, 'check_suite': {'id': 113229327599, 'node_id': 'CS_kwDOCriaAc8AAAAaXP5s7w', 'head_branch': 'dependabot/uv/tornado-6.6', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'status': 'completed', 'conclusion': 'success', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/113229327599', 'before': '0000000000000000000000000000000000000000', 'after': '2348b731e93570120a09671f57d82497700b0661', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-04T06:32:04Z', 'updated_at': '2026-11-04T06:32:45Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}]}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:32:11Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 7, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 7, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:31.971756	{'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'completed', 'check_run': {'id': 126428650724, 'name': 'run-tests', 'node_id': 'CR_kwDOCriaAc8AAAAdb7wc5A', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'external_id': 'bb902028-005e-53f8-a999-c8fd22f9bf9a', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428650724', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786156648/job/126428650724', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786156648/job/126428650724', 'status': 'completed', 'conclusion': 'success', 'started_at': '2026-11-04T06:32:06Z', 'completed_at': '2026-11-04T06:32:29Z', 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 2, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428650724/annotations'}, 'check_suite': {'id': 113229327622, 'node_id': 'CS_kwDOCriaAc8AAAAaXP5tBg', 'head_branch': 'dependabot/uv/tornado-6.6', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'status': 'completed', 'conclusion': 'success', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/113229327622', 'before': '0000000000000000000000000000000000000000', 'after': '2348b731e93570120a09671f57d82497700b0661', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-04T06:32:04Z', 'updated_at': '2026-11-04T06:32:29Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}]}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:32:11Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 7, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 7, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:12.705804	{'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/dependabot/uv/tornado-6.5.9', 'before': '051ad48713038eba5bd4bbc13a115c2c8492cfb5', 'after': '0000000000000000000000000000000000000000', 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'name': 'dolphin-emu', 'email': None, 'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': 1554574662, 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': 1793773931, 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 7, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 7, 'watchers': 14, 'default_branch': 'master', 'stargazers': 14, 'master_branch': 'master', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'dependabot[bot]', 'email': None}, 'forced': False, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'created': False, 'deleted': True, 'base_ref': None, 'compare': 'https://github.com/dolphin-emu/netplay-index/compare/051ad4871303...000000000000', 'commits': [], 'head_commit': None, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:10.960488	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'closed', 'number': 13, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/13', 'id': 4777658592, 'node_id': 'PR_kwDOCriaAc8AAAABHMVI4A', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/13', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/13.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/13.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13', 'number': 13, 'state': 'closed', 'locked': False, 'title': 'build(deps): bump tornado from 6.5.8 to 6.5.9', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.5.9.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/75ef8b1cfa0e658aceb17c5a810ad1c74dc69bc7"><code>75ef8b1</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3719">#3719</a> from bdarnell/fixes-659</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/3590cb4566d363331c294cfa63c5035ae2c32c87"><code>3590cb4</code></a> test: Hardcode SimpleAsyncHTTPClient in HTTP1xxLimitTestCase</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/9fc5d6d9fff435066836d165d0f1f6ebb067fb9e"><code>9fc5d6d</code></a> test: Make tracemalloc optional in httpclient_test</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/555a2ee9a20275d6dfde879977fce58d02e7898a"><code>555a2ee</code></a> iostream: Treat connection resets as a clean close in read_until_close</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/3ba622f2ecb75226a8e64d4ee96b7045fc4c8a64"><code>3ba622f</code></a> Release notes and version bump for 6.5.9</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/41eea68aba54e8ecaafc1b777dc5c104d289a290"><code>41eea68</code></a> test: Fix some test issues only found by our custom tox config</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ab1a778defaccd0dde9c1c419578e3a1777a9eeb"><code>ab1a778</code></a> Merge remote-tracking branch \'bdarnell/claude/asynchttpclient-streaming-memor...</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/437ab5f76565403b3403438d2e555d11f8128d32"><code>437ab5f</code></a> web: Do not follow symlinks out of the static directory</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/03945136ea9746eccf61caf88edae39642e59c93"><code>0394513</code></a> httputil: Apply the argument count limit to query strings</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/b798f8322a15ba8b6ef725d698d1037024139714"><code>b798f83</code></a> http1connection: Return after reading the response that follows a 1xx</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.5.9">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tornado&package-manager=uv&previous-version=6.5.8&new-version=6.5.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\'t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolphin-emu/netplay-index/network/alerts).\n\n</details>', 'created_at': '2026-10-07T19:48:10Z', 'updated_at': '2026-11-04T06:32:08Z', 'closed_at': '2026-11-04T06:32:08Z', 'merged_at': None, 'merge_commit_sha': '3b8166597e9f5027700ebecb9f8513a3d51039c3', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/13/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/13/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/051ad48713038eba5bd4bbc13a115c2c8492cfb5', 'head': {'label': 'dolphin-emu:dependabot/uv/tornado-6.5.9', 'ref': 'dependabot/uv/tornado-6.5.9', 'sha': '051ad48713038eba5bd4bbc13a115c2c8492cfb5', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 7, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 7, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 7, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 7, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/13'}, 'html': {'href': 'https://github.com/dolphin-emu/netplay-index/pull/13'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/13/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/13/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/051ad48713038eba5bd4bbc13a115c2c8492cfb5'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': True, 'rebaseable': True, 'mergeable_state': 'clean', 'merged_by': None, 'comments': 1, 'review_comments': 0, 'maintainer_can_modify': False, 'commits': 1, 'additions': 13, 'deletions': 13, 'changed_files': 1}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 7, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 7, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:08.748915	{'source': 'webserver', 'gh_type': 'issue_comment', 'raw': {'action': 'created', 'issue': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13', 'repository_url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/labels{/name}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/comments', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/events', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/13', 'id': 5750894885, 'node_id': 'PR_kwDOCriaAc8AAAABHMVI4A', 'number': 13, 'title': 'build(deps): bump tornado from 6.5.8 to 6.5.9', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'state': 'open', 'locked': False, 'assignees': [], 'milestone': None, 'comments': 1, 'created_at': '2026-10-07T19:48:10Z', 'updated_at': '2026-11-04T06:32:06Z', 'closed_at': None, 'assignee': None, 'author_association': 'CONTRIBUTOR', 'issue_field_values': [], 'type': None, 'active_lock_reason': None, 'draft': False, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/13', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/13', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/13.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/13.patch', 'merged_at': None}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.5.9.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/75ef8b1cfa0e658aceb17c5a810ad1c74dc69bc7"><code>75ef8b1</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3719">#3719</a> from bdarnell/fixes-659</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/3590cb4566d363331c294cfa63c5035ae2c32c87"><code>3590cb4</code></a> test: Hardcode SimpleAsyncHTTPClient in HTTP1xxLimitTestCase</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/9fc5d6d9fff435066836d165d0f1f6ebb067fb9e"><code>9fc5d6d</code></a> test: Make tracemalloc optional in httpclient_test</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/555a2ee9a20275d6dfde879977fce58d02e7898a"><code>555a2ee</code></a> iostream: Treat connection resets as a clean close in read_until_close</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/3ba622f2ecb75226a8e64d4ee96b7045fc4c8a64"><code>3ba622f</code></a> Release notes and version bump for 6.5.9</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/41eea68aba54e8ecaafc1b777dc5c104d289a290"><code>41eea68</code></a> test: Fix some test issues only found by our custom tox config</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ab1a778defaccd0dde9c1c419578e3a1777a9eeb"><code>ab1a778</code></a> Merge remote-tracking branch \'bdarnell/claude/asynchttpclient-streaming-memor...</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/437ab5f76565403b3403438d2e555d11f8128d32"><code>437ab5f</code></a> web: Do not follow symlinks out of the static directory</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/03945136ea9746eccf61caf88edae39642e59c93"><code>0394513</code></a> httputil: Apply the argument count limit to query strings</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/b798f8322a15ba8b6ef725d698d1037024139714"><code>b798f83</code></a> http1connection: Return after reading the response that follows a 1xx</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.5.9">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tornado&package-manager=uv&previous-version=6.5.8&new-version=6.5.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\'t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolphin-emu/netplay-index/network/alerts).\n\n</details>', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'timeline_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13/timeline', 'performed_via_github_app': None, 'state_reason': None}, 'comment': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments/6624314141', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/13#issuecomment-6624314141', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/13', 'id': 6624314141, 'node_id': 'IC_kwDOCriaAc8AAAABitcDHQ', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'created_at': '2026-11-04T06:32:06Z', 'updated_at': '2026-11-04T06:32:06Z', 'body': 'Superseded by #18.', 'author_association': 'CONTRIBUTOR', 'reactions': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments/6624314141/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}, 'performed_via_github_app': {'id': 29110, 'client_id': 'Iv1.4f9a6346434f815e', 'slug': 'dependabot', 'node_id': 'MDM6QXBwMjkxMTA=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'Dependabot', 'description': 'GitHub Dependabot', 'external_url': 'https://dependabot-api.githubapp.com', 'html_url': 'https://github.com/apps/dependabot', 'created_at': '2019-04-16T22:34:25Z', 'updated_at': '2026-04-27T17:22:53Z', 'permissions': {'actions': 'write', 'checks': 'write', 'contents': 'write', 'issues': 'write', 'members': 'read', 'metadata': 'read', 'packages': 'read', 'pull_requests': 'write', 'statuses': 'read', 'vulnerability_alerts': 'read', 'workflows': 'write'}, 'events': ['check_suite', 'issues', 'issue_comment', 'label', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'repository']}, 'minimized': None}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:06.410594	{'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'created', 'check_run': {'id': 126428650724, 'name': 'run-tests', 'node_id': 'CR_kwDOCriaAc8AAAAdb7wc5A', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'external_id': 'bb902028-005e-53f8-a999-c8fd22f9bf9a', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428650724', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786156648/job/126428650724', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786156648/job/126428650724', 'status': 'queued', 'conclusion': None, 'started_at': '2026-11-04T06:32:05Z', 'completed_at': None, 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 0, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428650724/annotations'}, 'check_suite': {'id': 113229327622, 'node_id': 'CS_kwDOCriaAc8AAAAaXP5tBg', 'head_branch': 'dependabot/uv/tornado-6.6', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/113229327622', 'before': '0000000000000000000000000000000000000000', 'after': '2348b731e93570120a09671f57d82497700b0661', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-04T06:32:04Z', 'updated_at': '2026-11-04T06:32:04Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}]}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:06.386976	{'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'created', 'check_run': {'id': 126428651083, 'name': 'build-flake', 'node_id': 'CR_kwDOCriaAc8AAAAdb7weSw', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'external_id': '32bd4e7a-20c7-52d7-b050-79625e477d37', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428651083', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786156669/job/126428651083', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786156669/job/126428651083', 'status': 'queued', 'conclusion': None, 'started_at': '2026-11-04T06:32:05Z', 'completed_at': None, 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 0, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428651083/annotations'}, 'check_suite': {'id': 113229327599, 'node_id': 'CS_kwDOCriaAc8AAAAaXP5s7w', 'head_branch': 'dependabot/uv/tornado-6.6', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/113229327599', 'before': '0000000000000000000000000000000000000000', 'after': '2348b731e93570120a09671f57d82497700b0661', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-04T06:32:04Z', 'updated_at': '2026-11-04T06:32:04Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}]}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:05.313421	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'labeled', 'number': 18, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'node_id': 'PR_kwDOCriaAc8AAAABMvbvuw', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18', 'number': 18, 'state': 'open', 'locked': False, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/e2b0f452bbf0e554c64e9d9ee922341c1c634d95"><code>e2b0f45</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3831">#3831</a> from bdarnell/final-6.6</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/90c4e3fd2c91a75a8e89a5cddd2caff803c4d361"><code>90c4e3f</code></a> Version bump for 6.6 final release</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ec17353e8c84ef20fe17eab4def51404ac56cbd8"><code>ec17353</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3828">#3828</a> from bdarnell/downstream-ci-66</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/15f66b043c5f1b69eff4088e90ee12b380d0d189"><code>15f66b0</code></a> ci: Add explicit read permission to CI jobs</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/444644112142d7033ffcae1b37e21f0a2cf024b2"><code>4446441</code></a> ci: Run the downstream testbed on a wheel built in the same run</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2e24d28a59433a41d77450b578f6be6028bad89"><code>c2e24d2</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3823">#3823</a> from bdarnell/claude/project-thread-uzh2s8</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2d8884b64c5131bc26ac0919cfcdb752784ba78"><code>c2d8884</code></a> test: Add pre-6.3 security fixes to the corpus</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/de32687e664d37fe35dd931e8f56bcfcb9b27ac5"><code>de32687</code></a> test: Add a regression corpus of past security fixes</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7848790399e6bdc272fc83d200345850f35de551"><code>7848790</code></a> maint: Add pre-tag checks and release instructions</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/f14321e4a07395b2f808afb66fc8d78f9c078829"><code>f14321e</code></a> ci: Compare benchmarks with the base branch on every PR</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.0">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tornado&package-manager=uv&previous-version=6.5.8&new-version=6.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\'t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolphin-emu/netplay-index/network/alerts).\n\n</details>', 'created_at': '2026-11-04T06:31:59Z', 'updated_at': '2026-11-04T06:32:02Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/2348b731e93570120a09671f57d82497700b0661', 'head': {'label': 'dolphin-emu:dependabot/uv/tornado-6.6', 'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18'}, 'html': {'href': 'https://github.com/dolphin-emu/netplay-index/pull/18'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/2348b731e93570120a09671f57d82497700b0661'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': False, 'commits': 1, 'additions': 19, 'deletions': 14, 'changed_files': 1}, 'label': {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:04.870243	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'labeled', 'number': 18, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'node_id': 'PR_kwDOCriaAc8AAAABMvbvuw', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18', 'number': 18, 'state': 'open', 'locked': False, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/e2b0f452bbf0e554c64e9d9ee922341c1c634d95"><code>e2b0f45</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3831">#3831</a> from bdarnell/final-6.6</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/90c4e3fd2c91a75a8e89a5cddd2caff803c4d361"><code>90c4e3f</code></a> Version bump for 6.6 final release</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ec17353e8c84ef20fe17eab4def51404ac56cbd8"><code>ec17353</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3828">#3828</a> from bdarnell/downstream-ci-66</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/15f66b043c5f1b69eff4088e90ee12b380d0d189"><code>15f66b0</code></a> ci: Add explicit read permission to CI jobs</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/444644112142d7033ffcae1b37e21f0a2cf024b2"><code>4446441</code></a> ci: Run the downstream testbed on a wheel built in the same run</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2e24d28a59433a41d77450b578f6be6028bad89"><code>c2e24d2</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3823">#3823</a> from bdarnell/claude/project-thread-uzh2s8</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2d8884b64c5131bc26ac0919cfcdb752784ba78"><code>c2d8884</code></a> test: Add pre-6.3 security fixes to the corpus</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/de32687e664d37fe35dd931e8f56bcfcb9b27ac5"><code>de32687</code></a> test: Add a regression corpus of past security fixes</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7848790399e6bdc272fc83d200345850f35de551"><code>7848790</code></a> maint: Add pre-tag checks and release instructions</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/f14321e4a07395b2f808afb66fc8d78f9c078829"><code>f14321e</code></a> ci: Compare benchmarks with the base branch on every PR</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.0">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tornado&package-manager=uv&previous-version=6.5.8&new-version=6.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\'t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolphin-emu/netplay-index/network/alerts).\n\n</details>', 'created_at': '2026-11-04T06:31:59Z', 'updated_at': '2026-11-04T06:32:02Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, {'id': 12572311721, 'node_id': 'LA_kwDOCriaAc8AAAAC7V5AqQ', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/python:uv', 'name': 'python:uv', 'color': '2b67c6', 'default': False, 'description': 'Pull requests that update python:uv code', 'archived_at': None, 'archived_by': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/2348b731e93570120a09671f57d82497700b0661', 'head': {'label': 'dolphin-emu:dependabot/uv/tornado-6.6', 'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18'}, 'html': {'href': 'https://github.com/dolphin-emu/netplay-index/pull/18'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/2348b731e93570120a09671f57d82497700b0661'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': False, 'commits': 1, 'additions': 19, 'deletions': 14, 'changed_files': 1}, 'label': {'id': 4969874522, 'node_id': 'LA_kwDOCriaAc8AAAABKDpEWg', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels/dependencies', 'name': 'dependencies', 'color': '0366d6', 'default': False, 'description': 'Pull requests that update a dependency file', 'archived_at': None, 'archived_by': None}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:02.606091	{'source': 'webserver', 'gh_type': 'check_suite', 'raw': {'action': 'requested', 'check_suite': {'id': 113229303441, 'node_id': 'CS_kwDOCriaAc8AAAAaXP4OkQ', 'head_branch': 'dependabot/uv/tornado-6.6', 'head_sha': '2348b731e93570120a09671f57d82497700b0661', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/113229303441', 'before': '0000000000000000000000000000000000000000', 'after': '2348b731e93570120a09671f57d82497700b0661', 'pull_requests': [{'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'number': 18, 'head': {'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}, 'base': {'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'repo': {'id': 179870209, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'name': 'netplay-index'}}}], 'app': {'id': 49947, 'client_id': 'Iv1.1fcaea7644d8b727', 'slug': 'dolphin-ci', 'node_id': 'MDM6QXBwNDk5NDc=', 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'Dolphin CI', 'description': 'Continuous Integration setup for [dolphin-emu.org](https://dolphin-emu.org/).', 'external_url': 'https://github.com/dolphin-emu', 'html_url': 'https://github.com/apps/dolphin-ci', 'created_at': '2019-12-26T22:26:07Z', 'updated_at': '2019-12-26T22:33:19Z', 'permissions': {'checks': 'write', 'contents': 'read', 'issues': 'write', 'members': 'read', 'metadata': 'read', 'pull_requests': 'write', 'statuses': 'write'}, 'events': ['check_run', 'commit_comment', 'issue_comment', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push']}, 'created_at': '2026-11-04T06:31:59Z', 'updated_at': '2026-11-04T06:31:59Z', 'rerequestable': True, 'runs_rerequestable': True, 'latest_check_runs_count': 0, 'check_runs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/113229303441/check-runs', 'head_commit': {'id': '2348b731e93570120a09671f57d82497700b0661', 'tree_id': '4db4d3aad55766a0d2fbc9ed6ed0b858c1d616cb', 'message': "build(deps): bump tornado from 6.5.8 to 6.6\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n- [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst)\n- [Commits](https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n  dependency-version: '6.6'\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>", 'timestamp': '2026-11-04T06:31:56Z', 'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com'}}}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:02.495236	{'source': 'webserver', 'gh_type': 'pull_request', 'raw': {'action': 'opened', 'number': 18, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18', 'id': 5150011323, 'node_id': 'PR_kwDOCriaAc8AAAABMvbvuw', 'html_url': 'https://github.com/dolphin-emu/netplay-index/pull/18', 'diff_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.diff', 'patch_url': 'https://github.com/dolphin-emu/netplay-index/pull/18.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18', 'number': 18, 'state': 'open', 'locked': False, 'title': 'build(deps): bump tornado from 6.5.8 to 6.6', 'user': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'body': 'Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado\'s changelog</a>.</em></p>\n<blockquote>\n<h1>Release notes</h1>\n<p>.. toctree::\n:maxdepth: 2</p>\n<p>releases/v6.6.0\nreleases/v6.5.10\nreleases/v6.5.9\nreleases/v6.5.8\nreleases/v6.5.7\nreleases/v6.5.6\nreleases/v6.5.5\nreleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2</p>\n<!-- raw HTML omitted -->\n</blockquote>\n<p>... (truncated)</p>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href="https://github.com/tornadoweb/tornado/commit/e2b0f452bbf0e554c64e9d9ee922341c1c634d95"><code>e2b0f45</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3831">#3831</a> from bdarnell/final-6.6</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/90c4e3fd2c91a75a8e89a5cddd2caff803c4d361"><code>90c4e3f</code></a> Version bump for 6.6 final release</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/ec17353e8c84ef20fe17eab4def51404ac56cbd8"><code>ec17353</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3828">#3828</a> from bdarnell/downstream-ci-66</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/15f66b043c5f1b69eff4088e90ee12b380d0d189"><code>15f66b0</code></a> ci: Add explicit read permission to CI jobs</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/444644112142d7033ffcae1b37e21f0a2cf024b2"><code>4446441</code></a> ci: Run the downstream testbed on a wheel built in the same run</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2e24d28a59433a41d77450b578f6be6028bad89"><code>c2e24d2</code></a> Merge pull request <a href="https://redirect.github.com/tornadoweb/tornado/issues/3823">#3823</a> from bdarnell/claude/project-thread-uzh2s8</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/c2d8884b64c5131bc26ac0919cfcdb752784ba78"><code>c2d8884</code></a> test: Add pre-6.3 security fixes to the corpus</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/de32687e664d37fe35dd931e8f56bcfcb9b27ac5"><code>de32687</code></a> test: Add a regression corpus of past security fixes</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/7848790399e6bdc272fc83d200345850f35de551"><code>7848790</code></a> maint: Add pre-tag checks and release instructions</li>\n<li><a href="https://github.com/tornadoweb/tornado/commit/f14321e4a07395b2f808afb66fc8d78f9c078829"><code>f14321e</code></a> ci: Compare benchmarks with the base branch on every PR</li>\n<li>Additional commits viewable in <a href="https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.0">compare view</a></li>\n</ul>\n</details>\n<br />\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tornado&package-manager=uv&previous-version=6.5.8&new-version=6.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\'t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n<details>\n<summary>Dependabot commands and options</summary>\n<br />\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolphin-emu/netplay-index/network/alerts).\n\n</details>', 'created_at': '2026-11-04T06:31:59Z', 'updated_at': '2026-11-04T06:32:00Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/comments', 'review_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/2348b731e93570120a09671f57d82497700b0661', 'head': {'label': 'dolphin-emu:dependabot/uv/tornado-6.6', 'ref': 'dependabot/uv/tornado-6.6', 'sha': '2348b731e93570120a09671f57d82497700b0661', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, 'base': {'label': 'dolphin-emu:master', 'ref': 'master', 'sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'allow_squash_merge': False, 'allow_merge_commit': False, 'allow_rebase_merge': True, 'allow_auto_merge': False, 'delete_branch_on_merge': False, 'allow_update_branch': False, 'use_squash_pr_title_as_default': False, 'squash_merge_commit_message': 'COMMIT_MESSAGES', 'squash_merge_commit_title': 'COMMIT_OR_PR_TITLE', 'merge_commit_message': 'PR_TITLE', 'merge_commit_title': 'MERGE_MESSAGE'}}, '_links': {'self': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18'}, 'html': {'href': 'https://github.com/dolphin-emu/netplay-index/pull/18'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/18/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls/18/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/2348b731e93570120a09671f57d82497700b0661'}}, 'author_association': 'CONTRIBUTOR', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None, 'merged': False, 'mergeable': None, 'rebaseable': None, 'mergeable_state': 'unknown', 'merged_by': None, 'comments': 0, 'review_comments': 0, 'maintainer_can_modify': False, 'commits': 1, 'additions': 19, 'deletions': 14, 'changed_files': 1}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:32:01.046917	{'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'completed', 'check_run': {'id': 126428360786, 'name': 'Dependabot', 'node_id': 'CR_kwDOCriaAc8AAAAdb7ewUg', 'head_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'external_id': 'd8147f71-d512-5017-b3c9-c7cf6057f02a', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428360786', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786062094/job/126428360786', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786062094/job/126428360786', 'status': 'completed', 'conclusion': 'success', 'started_at': '2026-11-04T06:31:18Z', 'completed_at': '2026-11-04T06:31:58Z', 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 1, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428360786/annotations'}, 'check_suite': {'id': 113229086125, 'node_id': 'CS_kwDOCriaAc8AAAAaXPq9rQ', 'head_branch': 'master', 'head_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'status': 'completed', 'conclusion': 'success', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/113229086125', 'before': '67376c4c5834e737eb1e256cf783ce5e12cb4f63', 'after': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'pull_requests': [], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-04T06:31:14Z', 'updated_at': '2026-11-04T06:31:58Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': []}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-11-04T06:31:57Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 8, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 8, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:31:59.446248	{'source': 'webserver', 'gh_type': 'push', 'raw': {'ref': 'refs/heads/dependabot/uv/tornado-6.6', 'before': '0000000000000000000000000000000000000000', 'after': '2348b731e93570120a09671f57d82497700b0661', 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'name': 'dolphin-emu', 'email': None, 'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': 1554574662, 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': 1793773917, 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 7, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 7, 'watchers': 14, 'default_branch': 'master', 'stargazers': 14, 'master_branch': 'master', 'organization': 'dolphin-emu', 'custom_properties': {}}, 'pusher': {'name': 'dependabot[bot]', 'email': None}, 'forced': False, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'dependabot[bot]', 'id': 49699333, 'node_id': 'MDM6Qm90NDk2OTkzMzM=', 'avatar_url': 'https://avatars.githubusercontent.com/in/29110?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dependabot%5Bbot%5D', 'html_url': 'https://github.com/apps/dependabot', 'followers_url': 'https://api.github.com/users/dependabot%5Bbot%5D/followers', 'following_url': 'https://api.github.com/users/dependabot%5Bbot%5D/following{/other_user}', 'gists_url': 'https://api.github.com/users/dependabot%5Bbot%5D/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dependabot%5Bbot%5D/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dependabot%5Bbot%5D/subscriptions', 'organizations_url': 'https://api.github.com/users/dependabot%5Bbot%5D/orgs', 'repos_url': 'https://api.github.com/users/dependabot%5Bbot%5D/repos', 'events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dependabot%5Bbot%5D/received_events', 'type': 'Bot', 'user_view_type': 'public', 'site_admin': False}, 'created': True, 'deleted': False, 'base_ref': None, 'compare': 'https://github.com/dolphin-emu/netplay-index/commit/2348b731e935', 'commits': [{'id': '2348b731e93570120a09671f57d82497700b0661', 'tree_id': '4db4d3aad55766a0d2fbc9ed6ed0b858c1d616cb', 'distinct': True, 'message': "build(deps): bump tornado from 6.5.8 to 6.6\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n- [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst)\n- [Commits](https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n  dependency-version: '6.6'\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>", 'timestamp': '2026-11-04T06:31:56Z', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/2348b731e93570120a09671f57d82497700b0661', 'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-04T06:31:56Z', 'username': 'dependabot[bot]'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com', 'date': '2026-11-04T06:31:56Z', 'username': 'web-flow'}, 'added': [], 'removed': [], 'modified': ['uv.lock']}], 'head_commit': {'id': '2348b731e93570120a09671f57d82497700b0661', 'tree_id': '4db4d3aad55766a0d2fbc9ed6ed0b858c1d616cb', 'distinct': True, 'message': "build(deps): bump tornado from 6.5.8 to 6.6\n\nBumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.8 to 6.6.\n- [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst)\n- [Commits](https://github.com/tornadoweb/tornado/compare/v6.5.8...v6.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: tornado\n  dependency-version: '6.6'\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>", 'timestamp': '2026-11-04T06:31:56Z', 'url': 'https://github.com/dolphin-emu/netplay-index/commit/2348b731e93570120a09671f57d82497700b0661', 'author': {'name': 'dependabot[bot]', 'email': '49699333+dependabot[bot]@users.noreply.github.com', 'date': '2026-11-04T06:31:56Z', 'username': 'dependabot[bot]'}, 'committer': {'name': 'GitHub', 'email': 'noreply@github.com', 'date': '2026-11-04T06:31:56Z', 'username': 'web-flow'}, 'added': [], 'removed': [], 'modified': ['uv.lock']}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T06:31:17.377751	{'source': 'webserver', 'gh_type': 'check_run', 'raw': {'action': 'created', 'check_run': {'id': 126428360786, 'name': 'Dependabot', 'node_id': 'CR_kwDOCriaAc8AAAAdb7ewUg', 'head_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'external_id': 'd8147f71-d512-5017-b3c9-c7cf6057f02a', 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428360786', 'html_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786062094/job/126428360786', 'details_url': 'https://github.com/dolphin-emu/netplay-index/actions/runs/41786062094/job/126428360786', 'status': 'queued', 'conclusion': None, 'started_at': '2026-11-04T06:31:16Z', 'completed_at': None, 'output': {'title': None, 'summary': None, 'text': None, 'annotations_count': 0, 'annotations_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-runs/126428360786/annotations'}, 'check_suite': {'id': 113229086125, 'node_id': 'CS_kwDOCriaAc8AAAAaXPq9rQ', 'head_branch': 'master', 'head_sha': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'status': 'queued', 'conclusion': None, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index/check-suites/113229086125', 'before': '67376c4c5834e737eb1e256cf783ce5e12cb4f63', 'after': '0cf8785a0c7503dd0fd9704672ff1beffa7e87e4', 'pull_requests': [], 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'created_at': '2026-11-04T06:31:14Z', 'updated_at': '2026-11-04T06:31:14Z'}, 'app': {'id': 15368, 'client_id': 'Iv1.05c79e9ad1f6bdfa', 'slug': 'github-actions', 'node_id': 'MDM6QXBwMTUzNjg=', 'owner': {'login': 'github', 'id': 9919, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjk5MTk=', 'avatar_url': 'https://avatars.githubusercontent.com/u/9919?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/github', 'html_url': 'https://github.com/github', 'followers_url': 'https://api.github.com/users/github/followers', 'following_url': 'https://api.github.com/users/github/following{/other_user}', 'gists_url': 'https://api.github.com/users/github/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/github/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/github/subscriptions', 'organizations_url': 'https://api.github.com/users/github/orgs', 'repos_url': 'https://api.github.com/users/github/repos', 'events_url': 'https://api.github.com/users/github/events{/privacy}', 'received_events_url': 'https://api.github.com/users/github/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'name': 'GitHub Actions', 'description': 'Automate your workflow from idea to production', 'external_url': 'https://help.github.com/en/actions', 'html_url': 'https://github.com/apps/github-actions', 'created_at': '2018-07-30T09:30:17Z', 'updated_at': '2026-06-18T16:17:48Z', 'permissions': {'actions': 'write', 'administration': 'read', 'artifact_metadata': 'write', 'attestations': 'write', 'checks': 'write', 'code_quality': 'write', 'contents': 'write', 'copilot_requests': 'write', 'deployments': 'write', 'discussions': 'write', 'drives': 'write', 'issues': 'write', 'merge_queues': 'write', 'metadata': 'read', 'models': 'read', 'packages': 'write', 'pages': 'write', 'pull_requests': 'write', 'repository_hooks': 'write', 'repository_projects': 'write', 'security_events': 'write', 'statuses': 'write', 'vulnerability_alerts': 'read'}, 'events': ['branch_protection_rule', 'check_run', 'check_suite', 'create', 'delete', 'deployment', 'deployment_status', 'discussion', 'discussion_comment', 'fork', 'gollum', 'issues', 'issue_comment', 'label', 'merge_group', 'milestone', 'page_build', 'public', 'pull_request', 'pull_request_review', 'pull_request_review_comment', 'push', 'registry_package', 'release', 'repository', 'repository_dispatch', 'status', 'watch', 'workflow_dispatch', 'workflow_run']}, 'pull_requests': []}, 'repository': {'id': 179870209, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNzk4NzAyMDk=', 'name': 'netplay-index', 'full_name': 'dolphin-emu/netplay-index', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/netplay-index', 'description': 'A NetPlay Index server for Dolphin', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/netplay-index', 'forks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/netplay-index/deployments', 'created_at': '2019-04-06T18:17:42Z', 'updated_at': '2026-10-06T20:39:51Z', 'pushed_at': '2026-10-22T23:56:01Z', 'git_url': 'git://github.com/dolphin-emu/netplay-index.git', 'ssh_url': 'git@github.com:dolphin-emu/netplay-index.git', 'clone_url': 'https://github.com/dolphin-emu/netplay-index.git', 'svn_url': 'https://github.com/dolphin-emu/netplay-index', 'homepage': '', 'size': 3922, 'stargazers_count': 14, 'watchers_count': 14, 'language': 'Python', 'has_issues': True, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 12, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 7, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'allow_forking': True, 'is_template': False, 'web_commit_signoff_required': False, 'has_pull_requests': True, 'pull_request_creation_policy': 'all', 'topics': ['dolphin-emu', 'python3', 'tornado-web'], 'visibility': 'public', 'forks': 12, 'open_issues': 7, 'watchers': 14, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'OatmealDome', 'id': 11504941, 'node_id': 'MDQ6VXNlcjExNTA0OTQx', 'avatar_url': 'https://avatars.githubusercontent.com/u/11504941?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/OatmealDome', 'html_url': 'https://github.com/OatmealDome', 'followers_url': 'https://api.github.com/users/OatmealDome/followers', 'following_url': 'https://api.github.com/users/OatmealDome/following{/other_user}', 'gists_url': 'https://api.github.com/users/OatmealDome/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/OatmealDome/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/OatmealDome/subscriptions', 'organizations_url': 'https://api.github.com/users/OatmealDome/orgs', 'repos_url': 'https://api.github.com/users/OatmealDome/repos', 'events_url': 'https://api.github.com/users/OatmealDome/events{/privacy}', 'received_events_url': 'https://api.github.com/users/OatmealDome/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}
2026-11-04T05:53:11.060616	{'source': 'webserver', 'gh_type': 'pull_request_review', 'raw': {'action': 'submitted', 'review': {'id': 5763862054, 'node_id': 'PRR_kwDOALCn2M8AAAABV42OJg', 'user': {'login': 'iwubcode', 'id': 15224722, 'node_id': 'MDQ6VXNlcjE1MjI0NzIy', 'avatar_url': 'https://avatars.githubusercontent.com/u/15224722?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/iwubcode', 'html_url': 'https://github.com/iwubcode', 'followers_url': 'https://api.github.com/users/iwubcode/followers', 'following_url': 'https://api.github.com/users/iwubcode/following{/other_user}', 'gists_url': 'https://api.github.com/users/iwubcode/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/iwubcode/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/iwubcode/subscriptions', 'organizations_url': 'https://api.github.com/users/iwubcode/orgs', 'repos_url': 'https://api.github.com/users/iwubcode/repos', 'events_url': 'https://api.github.com/users/iwubcode/events{/privacy}', 'received_events_url': 'https://api.github.com/users/iwubcode/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': None, 'commit_id': 'e8b61a7708c2421982bda730345f93bda883ca85', 'state': 'approved', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14971#pullrequestreview-5763862054', 'pull_request_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14971', '_links': {'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14971#pullrequestreview-5763862054'}, 'pull_request': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14971'}}, 'submitted_at': '2026-11-04T05:53:08Z', 'updated_at': '2026-11-04T05:53:08Z', 'author_association': 'CONTRIBUTOR'}, 'pull_request': {'url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14971', 'id': 5114284208, 'node_id': 'PR_kwDOALCn2M8AAAABMNXIsA', 'html_url': 'https://github.com/dolphin-emu/dolphin/pull/14971', 'diff_url': 'https://github.com/dolphin-emu/dolphin/pull/14971.diff', 'patch_url': 'https://github.com/dolphin-emu/dolphin/pull/14971.patch', 'issue_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14971', 'number': 14971, 'state': 'open', 'locked': False, 'title': 'Replace make_unique with C++23 make_unique_for_overwrite when practical.', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'body': 'This avoids unnecessary memory zeroing.', 'created_at': '2026-11-02T03:02:16Z', 'updated_at': '2026-11-02T03:03:23Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': 'dd972490d08f853617a122c197bae3c56192149e', 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14971/commits', 'review_comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14971/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/14971/comments', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e8b61a7708c2421982bda730345f93bda883ca85', 'head': {'label': 'jordan-woyak:make-unique-for-overwrite', 'ref': 'make-unique-for-overwrite', 'sha': 'e8b61a7708c2421982bda730345f93bda883ca85', 'user': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 16818408, 'node_id': 'MDEwOlJlcG9zaXRvcnkxNjgxODQwOA==', 'name': 'dolphin', 'full_name': 'jordan-woyak/dolphin', 'private': False, 'owner': {'login': 'jordan-woyak', 'id': 1768214, 'node_id': 'MDQ6VXNlcjE3NjgyMTQ=', 'avatar_url': 'https://avatars.githubusercontent.com/u/1768214?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/jordan-woyak', 'html_url': 'https://github.com/jordan-woyak', 'followers_url': 'https://api.github.com/users/jordan-woyak/followers', 'following_url': 'https://api.github.com/users/jordan-woyak/following{/other_user}', 'gists_url': 'https://api.github.com/users/jordan-woyak/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/jordan-woyak/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/jordan-woyak/subscriptions', 'organizations_url': 'https://api.github.com/users/jordan-woyak/orgs', 'repos_url': 'https://api.github.com/users/jordan-woyak/repos', 'events_url': 'https://api.github.com/users/jordan-woyak/events{/privacy}', 'received_events_url': 'https://api.github.com/users/jordan-woyak/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/jordan-woyak/dolphin', 'description': 'Dolphin is a GameCube/Wii emulator, allowing you to play games for these two platforms on PC, with improvements.', 'fork': True, 'url': 'https://api.github.com/repos/jordan-woyak/dolphin', 'forks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/forks', 'keys_url': 'https://api.github.com/repos/jordan-woyak/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/jordan-woyak/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/jordan-woyak/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/jordan-woyak/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/jordan-woyak/dolphin/events', 'assignees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/jordan-woyak/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/jordan-woyak/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/jordan-woyak/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/jordan-woyak/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/jordan-woyak/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/jordan-woyak/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/jordan-woyak/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/jordan-woyak/dolphin/merges', 'archive_url': 'https://api.github.com/repos/jordan-woyak/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/jordan-woyak/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/jordan-woyak/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/jordan-woyak/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/jordan-woyak/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/jordan-woyak/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/jordan-woyak/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/jordan-woyak/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/jordan-woyak/dolphin/deployments', 'created_at': '2014-02-13T21:50:38Z', 'updated_at': '2026-06-27T21:22:47Z', 'pushed_at': '2026-11-03T21:00:34Z', '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': 530423, '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': '833d8c05965ac1e2242799d3c9b0e0fadbcbb7f8', 'user': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'repo': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T04:05:54Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15767, 'watchers_count': 15767, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15767, '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/14971'}, 'html': {'href': 'https://github.com/dolphin-emu/dolphin/pull/14971'}, 'issue': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14971'}, 'comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/14971/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls/14971/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/14971/commits'}, 'statuses': {'href': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/e8b61a7708c2421982bda730345f93bda883ca85'}}, 'author_association': 'MEMBER', 'auto_merge': None, 'assignee': None, 'active_lock_reason': None}, 'repository': {'id': 11577304, 'node_id': 'MDEwOlJlcG9zaXRvcnkxMTU3NzMwNA==', 'name': 'dolphin', 'full_name': 'dolphin-emu/dolphin', 'private': False, 'owner': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/dolphin-emu', 'html_url': 'https://github.com/dolphin-emu', 'followers_url': 'https://api.github.com/users/dolphin-emu/followers', 'following_url': 'https://api.github.com/users/dolphin-emu/following{/other_user}', 'gists_url': 'https://api.github.com/users/dolphin-emu/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/dolphin-emu/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/dolphin-emu/subscriptions', 'organizations_url': 'https://api.github.com/users/dolphin-emu/orgs', 'repos_url': 'https://api.github.com/users/dolphin-emu/repos', 'events_url': 'https://api.github.com/users/dolphin-emu/events{/privacy}', 'received_events_url': 'https://api.github.com/users/dolphin-emu/received_events', 'type': 'Organization', 'user_view_type': 'public', 'site_admin': False}, 'html_url': 'https://github.com/dolphin-emu/dolphin', 'description': 'Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.', 'fork': False, 'url': 'https://api.github.com/repos/dolphin-emu/dolphin', 'forks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/forks', 'keys_url': 'https://api.github.com/repos/dolphin-emu/dolphin/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/dolphin-emu/dolphin/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/dolphin-emu/dolphin/teams', 'hooks_url': 'https://api.github.com/repos/dolphin-emu/dolphin/hooks', 'issue_events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/events{/number}', 'events_url': 'https://api.github.com/repos/dolphin-emu/dolphin/events', 'assignees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/assignees{/user}', 'branches_url': 'https://api.github.com/repos/dolphin-emu/dolphin/branches{/branch}', 'tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/tags', 'blobs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/dolphin-emu/dolphin/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/dolphin-emu/dolphin/languages', 'stargazers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/stargazers', 'contributors_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contributors', 'subscribers_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscribers', 'subscription_url': 'https://api.github.com/repos/dolphin-emu/dolphin/subscription', 'commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/dolphin-emu/dolphin/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/dolphin-emu/dolphin/contents/{+path}', 'compare_url': 'https://api.github.com/repos/dolphin-emu/dolphin/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/dolphin-emu/dolphin/merges', 'archive_url': 'https://api.github.com/repos/dolphin-emu/dolphin/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/dolphin-emu/dolphin/downloads', 'issues_url': 'https://api.github.com/repos/dolphin-emu/dolphin/issues{/number}', 'pulls_url': 'https://api.github.com/repos/dolphin-emu/dolphin/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/dolphin-emu/dolphin/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/dolphin-emu/dolphin/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/dolphin-emu/dolphin/labels{/name}', 'releases_url': 'https://api.github.com/repos/dolphin-emu/dolphin/releases{/id}', 'deployments_url': 'https://api.github.com/repos/dolphin-emu/dolphin/deployments', 'created_at': '2013-07-22T09:07:57Z', 'updated_at': '2026-11-04T04:05:54Z', 'pushed_at': '2026-11-03T04:44:51Z', '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': 563758, 'stargazers_count': 15767, 'watchers_count': 15767, 'language': 'C++', 'has_issues': False, 'has_projects': False, 'has_downloads': False, 'has_wiki': True, 'has_pages': False, 'has_discussions': False, 'forks_count': 3379, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 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': 3379, 'open_issues': 481, 'watchers': 15767, 'default_branch': 'master', 'custom_properties': {}}, 'organization': {'login': 'dolphin-emu', 'id': 5050316, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjUwNTAzMTY=', 'url': 'https://api.github.com/orgs/dolphin-emu', 'repos_url': 'https://api.github.com/orgs/dolphin-emu/repos', 'events_url': 'https://api.github.com/orgs/dolphin-emu/events', 'hooks_url': 'https://api.github.com/orgs/dolphin-emu/hooks', 'issues_url': 'https://api.github.com/orgs/dolphin-emu/issues', 'members_url': 'https://api.github.com/orgs/dolphin-emu/members{/member}', 'public_members_url': 'https://api.github.com/orgs/dolphin-emu/public_members{/member}', 'avatar_url': 'https://avatars.githubusercontent.com/u/5050316?v=4', 'description': ''}, 'sender': {'login': 'iwubcode', 'id': 15224722, 'node_id': 'MDQ6VXNlcjE1MjI0NzIy', 'avatar_url': 'https://avatars.githubusercontent.com/u/15224722?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/iwubcode', 'html_url': 'https://github.com/iwubcode', 'followers_url': 'https://api.github.com/users/iwubcode/followers', 'following_url': 'https://api.github.com/users/iwubcode/following{/other_user}', 'gists_url': 'https://api.github.com/users/iwubcode/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/iwubcode/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/iwubcode/subscriptions', 'organizations_url': 'https://api.github.com/users/iwubcode/orgs', 'repos_url': 'https://api.github.com/users/iwubcode/repos', 'events_url': 'https://api.github.com/users/iwubcode/events{/privacy}', 'received_events_url': 'https://api.github.com/users/iwubcode/received_events', 'type': 'User', 'user_view_type': 'public', 'site_admin': False}, 'installation': {'id': 35437981, 'node_id': 'MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzU0Mzc5ODE='}}, 'type': 'raw_gh_hook'}